Обзор процесса создания приложения
Возможно соединить основанное на документе приложение, не имея необходимость писать много кода. Необходимо только создать проект документа, составить интерфейс пользователя, завершить информационный список свойств для типов документов, реализовать подкласс NSDocument
, и добавьте любые другие пользовательские классы или поведение, требуемое Вашим приложением.
Если Вы намереваетесь продать свое приложение через App Store Mac или использовать хранение iCloud, также необходимо создать явное Приложение ID, создать профили настройки и включить корректные права для приложения. Эти процедуры объяснены в Руководстве по Распределению приложений.
XCode обеспечивает основанный на документе шаблон приложений
Для ускорения разработки основанных на документе приложений XCode обеспечивает Шаблон приложений Какао, имеющий опцию сделать документ приложения базируемым. Шаблон обеспечивает следующие вещи:
Скелетный NSDocument разделяет реализацию на подклассы. Реализация подкласса документа (
.m
) файл включает прокомментированные блоки для важных методов, включаяinit
метод, инициализирующий и возвращающийсяself
. Этот метод обеспечивает расположение для специфичной для подкласса инициализации. Шаблон также включает полностью реализованныйwindowNibName
метод, возвращающий имя файла пера окна документа. ПереопределениеwindowControllerDidLoadNib:
обеспечивает место для кода, который будет выполняться после того, как перо окна документа закончило загружаться. Кроме того, шаблон включает скелетные реализацииdataOfType:error:
иreadFromData:ofType:error:
основная запись и чтение методов; если Вы не предоставляете рабочую реализацию, эти методы выдают исключение. Наконец, шаблон включает переопределениеautosavesInPlace
возвращающийся метод классаYES
включать автоматическое сохранение изменений в Ваших документах.Файл пера для документа приложения. Этот файл пера называют с Вашим
NSDocument
разделите имя на подклассы с расширением.xib
. ПодклассNSDocument
сделан Владельцем Файла файла пера. Этому назвали выходwindow
подключенный к его объекту окна, которому поочередно подключили выход делегата к Владельцу Файла, как показано на рисунке 2-3. Окно имеет только один объект пользовательского интерфейса в нем первоначально, текстовое поле со словами «Ваше содержание документа здесь».Файл пера строки меню приложения. Файл пера строки меню, названный
MainMenu.xib
, содержит меню приложения (названный с именем приложения), меню File (со всеми его командами ассоциированного документа), меню Edit (с командами редактирования текста и пунктами меню Undo и Redo), и Формат, Представление, Окно и Меню справки (с их собственными командами представления пунктов меню). Эти пункты меню подключены к надлежащим методам действия первого респондента. Например, пункт меню About подключен сorderFrontStandardAboutPanel:
метод действия, выводящий на экран стандартное окно About.Посмотрите Анализ Ваши Команды Панели Меню приложения для получения дополнительной информации о файле пера строки меню, предоставленном шаблонами приложений XCode.
Информационный список свойств приложения.
<appName>-Info.plist
файл содержит значения заполнителя для глобальных ключей приложения, а также дляCFBundleDocumentTypes
ключ, присваиваемое значение которого является словарем, содержащим пары ключ/значение, указывающие информацию о типах документов работы приложения с, включаяNSDocument
подкласс для каждого типа документа.
Следующие разделы описывают процесс выбора и использования основанного на документе шаблона приложений.
Создайте проект
Для создания проекта в XCode выберите File> New> New Project. Выберите Cocoa Application icon из Выборов приложения OS X. В следующей области выберите Create Document-Based Application option, как показано на рисунке 3-1. В этой области Вы также называете свое приложение, даете Ваш NSDocument
разделите префикс на подклассы и укажите расширение файла Ваших документов, в дополнение к другим опциям. Если Вы намереваетесь использовать Базовые Данные для своей модели данных, выберите автоматически вставляющую опцию Use Core Data, NSPersistentDocument
как непосредственный суперкласс Вашего подкласса документа.
При необходимости заключительная область Нового диалогового окна Проекта позволяет Вам поместить свой проект в файловую систему и создать репозиторий управления исходным кодом. Для получения дополнительной информации о процессе создания проекта XCode, посмотрите, Запускают Проект в Обзоре XCode.
Не пишущий дополнительного кода, можно скомпилировать и выполнить приложение. При первом запуске приложения Вы видите документ без названия с пустым окном. Команды меню File все делают что-то разумное, такое как перевод в рабочее состояние диалогового окна Сохранения или Открывают диалоговое окно. Поскольку Вы еще не определили типов или реализовали загрузку и сохранение, Вы не можете открыть или сохранить что-либо, и реализации по умолчанию выдают исключение.
Создайте свой пользовательский интерфейс окна документа
Для создания пользовательского интерфейса для окна документа, в области навигатора проекта, щелкают по файлу пера, названному с Вашим NSDocument
разделите имя на подклассы с расширением .xib.
Это открывает файл в Интерфейсном Разработчике, редакторе XCode, обеспечивающем графический интерфейс для создания файлов пользовательского интерфейса. Можно перетащить элементы пользовательского интерфейса на представление окна документа от Интерфейсной Библиотеки объектов Разработчика в служебной области. Если объекты в окне документа требуют выходов и действий, добавьте их к Вашему NSDocument
подкласс. Соедините эти действия и выходы через значок File's Owner в списке заполнителей в Интерфейсном прикреплении Разработчика. Если Ваши объекты документа взаимодействуют с другими пользовательскими объектами, такими как объекты модели, выполняющие специализированные вычисления, определяющие те объекты в Интерфейсном Разработчике и делающие любые необходимые соединения с ними.
Поэтапные инструкции для соединения пунктов меню к методам действия в Вашем коде даны в Пользовательских интерфейсах Редактирования в Обзоре XCode.
Рассмотрите свои команды панели меню приложения
Таблица 3-1 перечисляет соединения действия первого респондента меню File, существующие в шаблоне.
Команда меню File | Действие первого респондента |
---|---|
Новый |
|
Открытый |
|
Откройте Recent> Clear Menu |
|
Близко |
|
Сохраните/Сохраните Версию |
|
Вернитесь документ |
|
Установка страницы |
|
Печать |
|
После того, как документ был сохранен впервые, команда Save изменяется для Сохранения Версии. В приложениях, позволивших сохраниться автоматически на месте, Сохранение Как и Сохраняющих Все элементы в меню File, скрыты, и пункт меню Duplicate добавляется. Шаблон имеет подобные готовые соединения для Редактирования, Формата, Представления, Окна и Меню справки.
Для пользовательских элементов меню Вашего приложения, уже не подключенных к методам действия в объектах или объектам местозаполнителя в файле пера, существует два общих метода для обработки команд меню в приложении OS X:
Подключите соответствующий пункт меню к первому методу респондента.
Подключите пункт меню к методу Вашего объекта пользовательского приложения или Вашего делегата приложения объект.
Из этих двух методов первое более распространено, потому что много команд меню действуют на текущий документ или его содержание, которое является частью цепочки респондента. Второй метод используется прежде всего для обработки команд, которые являются глобальной переменной к приложению, такому как отображение предпочтений или создание нового документа. В дополнение к реализации методов действия реагировать на Ваши команды меню, необходимо также реализовать методы NSMenuValidation
протокол для включения пунктов меню для тех команд.
Для получения дополнительной информации о проверке меню и других темах меню, посмотрите Меню приложения и Раскрывающийся Список, Программируя Темы.
Завершите информационный список свойств
Необходимо сконфигурировать информационный список свойств проекта так, чтобы приложение знало, какие виды документов это может обработать. Вы указываете эту информацию в файле списка свойств информации о XCode, показанном на рисунке 3-2. Файл списка свойств хранят в пакете приложения и называют <appName>-Info.plist
по умолчанию.
Когда NSDocumentController
объект создает новый документ или открывает существующий документ, он ищет список свойств такие элементы как класс документа, обрабатывающий тип документа, универсальный идентификатор типа (UTI) для типа, и может ли приложение отредактировать или только просмотреть тип. Точно так же Launch Services использует информацию о файле значка для типа и знать, какое приложение запустить, когда пользователь дважды щелкает по файлу документа. Информация о типе документа связана с CFBundleDocumentTypes
ключ как массив словарей, каждый из которых содержит пары ключ/значение, определяющие тип документа.
XCode предоставляет файлу списка свойств каждый проект приложения Mac. Когда Вы выбираете, редактор списка свойств появляется Info.plist
файл в навигаторе проекта или выборе цель и выбирает Информационную панель редактора проекта. В Информационной панели существует список целевых свойств. Можно отредактировать значения свойств и добавить новые пары ключ/значение. По умолчанию XCode выводит на экран удобную для пользователя версию каждого ключевого имени. Видеть фактические ключевые имена, которые находятся в Info.plist
файл, Щелчок управления, элемент в редакторе и выбирает Show Raw Keys/Values из появляющегося контекстного меню.
Для нового основанного на документе приложения необходимо создать тип документа с именем и расширением, которые целесообразны для приложения. Можно добавить больше типов также, один для каждых из типов документов дескрипторы приложения. Самый важный тип документа приложения должен быть перечислен сначала в списке типов. Это - тип это NSDocumentController
использование по умолчанию, когда пользователь просит новый документ.
Самым важным значением типа документа является свой Uniform Type Identifier (UTI), строка, однозначно определяющая тип данных, содержавшихся в документе для всех приложений и служб для положений. UTI документа соответствует LSItemContentTypes
введите информационный список свойств. UTI используется в качестве программируемого имени типа NSDocument
и NSDocumentController
. При помощи UTIs приложения избегают большой части сложности, ранее требуемой обработать разрозненные виды информации о типе файла в системе, включая расширения файла, типы MIME и коды типа HFS (типы OS).
Документ UTI может быть определен системой, как показано в Объявленных системой Универсальных Идентификаторах типов в Универсальной Ссылке Идентификаторов типов или основанном на документе приложении, может объявить свой собственный UTI. Такой пользовательский UTIs должен также быть экспортирован для создания системы, знающей о них, как описано в Экспорте Пользовательская информация о Типе документа.
Для объявления типа документа в XCode выполните следующие шаги:
Выберите проект в навигаторе проекта.
Выберите цель и щелкните по вкладке Info.
Нажмите кнопку Add (+) в правом нижнем углу области редактора и выберите Add Document Type из всплывающего меню.
Щелкните по треугольнику рядом с «Неназванным» для раскрытия полей свойства.
Также можно выбрать Info.plist
файл в навигаторе проекта, щелкните в области редактора и выберите Editor> Add Item для добавления свойств типа документа непосредственно к файлу списка свойств, как показано на рисунке 3-2. Выберите Editor> Show Raw Keys и Values для раскрытия фактических ключевых имен.
Добавьте свойства, показанные в Таблице 3-2.
Ключ | Поле Xcode (идентификатор Info.plist) | Значение |
---|---|---|
| Идентификатор | Массив строк UTI. Как правило, только один указан на тип документа. Строка UTI должна быть разъяснена явно. |
| Класс (какао класс NSDocument) | Строка, указывающая |
| Роль | Строка, указывающая роль приложение относительно этого типа документа. Возможные значения являются Редактором, Средством просмотра, Shell, Генератором Беглого взгляда или Ни одним. |
| (Экспортный тип UTIs) | Массив строк, указывающих UTIs, определяющие поддерживаемый тип файла, в который этот документ может экспортировать свое содержание. |
| Пакет (Документ является пакетом или пакетом), | Булево значение, указывающее, распределяется ли документ как пакет. Если |
| Значок (имя файла значка) | Строка, указывающая имя файла ресурсов значка (расширение |
| Имя (имя типа документа) | Строка, указывающая абстрактное имя типа документа. |
| Разряд обработчика | Строка, указывающая, как Launch Services оценивает это приложение среди тех, которые объявляют себя редакторы или средства просмотра документов этого типа. Возможные значения, в порядке приоритета, |
Для получения дополнительной информации об этих и других ключах типа документа, см. «CFBundleDocumentTypes» в информационной Ключевой Ссылке Списка свойств.
Экспортируйте пользовательскую информацию о типе документа
При определении пользовательского типа документа с помощью его собственного UTI необходимо экспортировать UTI. Для объявления типа документа в XCode выполните следующие шаги:
Выберите проект в области навигатора проекта.
Выберите цель и щелкните по вкладке Info.
Нажмите кнопку Add (+) в правом нижнем углу области редактора и выберите Add Exported UTI из всплывающего меню.
Щелкните по треугольнику рядом с «Неназванным» для раскрытия полей свойства.
Добавьте свойства, показанные в Таблице 3-3.
Ключ | Поле Xcode (идентификатор Info.plist) | Значение |
---|---|---|
| Описание | Строка, описывающая этот тип документа. |
| Идентификатор | UTI экспортируемого типа документа. |
| Значок (Имя файла значка) | Строка, указывающая имя файла значка типа документа. |
| Соответствует (Соответствует UTIs), | Массив строк, представляющих UTIs, которому соответствует тип документа. |
| Расширения (эквивалентные типы) | Массив строк называют |
Для получения дополнительной информации об этих и других экспортируемых ключах свойства типа, посмотрите Объявление Новых Универсальных Идентификаторов типов в Универсальном Обзоре Идентификаторов типов.
Для получения информации о типах документов в альтернативных основанных на документе проектах приложения посмотрите Многократное Использование Типов документов Многократные Подклассы NSDocument и Дополнительные Соображения Типа документа.
Реализуйте подкласс NSDocument
Каждое основанное на документе приложение, использующее архитектуру документа, должно создать по крайней мере один подкласс NSDocument
. Необходимо переопределить некоторых NSDocument
методы (среди нескольких выбора), и необходимо переопределить несколько других в определенных ситуациях. Подробные данные, объясняющие, как реализовать Ваш NSDocument
подкласс находится в Создании Подкласса NSDocument.
Создайте любые дополнительные пользовательские классы
Архитектура документа Какао, как воплощено прежде всего в NSDocument
, NSDocumentController
, и NSWindowController
, служит операционной основой для приложений, включая сложные механизмы обработки документов. Однако необходимо добавить способы поведения, дифференцирующие приложение и удовлетворяющие ему его конкретной цели. Очень специализированное поведение может быть реализовано в Вашем NSDocument
подкласс, в методах делегата, пользовательские классы добавили к Вашему проекту и подклассам NSDocumentController
и NSWindowController
если необходимо расширить возможности любого из тех классов. Обычно необходимо использовать пользовательские классы для инкапсуляции логики программы модели данных и контроллеров, поддерживая здоровое разделение MVC.
Для получения дополнительной информации о проекте приложения, см. Руководство по программированию Приложения Mac.