Обзор процесса создания приложения

Возможно соединить основанное на документе приложение, не имея необходимость писать много кода. Необходимо только создать проект документа, составить интерфейс пользователя, завершить информационный список свойств для типов документов, реализовать подкласс NSDocument, и добавьте любые другие пользовательские классы или поведение, требуемое Вашим приложением.

Если Вы намереваетесь продать свое приложение через App Store Mac или использовать хранение iCloud, также необходимо создать явное Приложение ID, создать профили настройки и включить корректные права для приложения. Эти процедуры объяснены в Руководстве по Распределению приложений.

XCode обеспечивает основанный на документе шаблон приложений

Для ускорения разработки основанных на документе приложений XCode обеспечивает Шаблон приложений Какао, имеющий опцию сделать документ приложения базируемым. Шаблон обеспечивает следующие вещи:

Следующие разделы описывают процесс выбора и использования основанного на документе шаблона приложений.

Создайте проект

Для создания проекта в XCode выберите File> New> New Project. Выберите Cocoa Application icon из Выборов приложения OS X. В следующей области выберите Create Document-Based Application option, как показано на рисунке 3-1. В этой области Вы также называете свое приложение, даете Ваш NSDocument разделите префикс на подклассы и укажите расширение файла Ваших документов, в дополнение к другим опциям. Если Вы намереваетесь использовать Базовые Данные для своей модели данных, выберите автоматически вставляющую опцию Use Core Data, NSPersistentDocument как непосредственный суперкласс Вашего подкласса документа.

Рисунок 3-1  Новое диалоговое окно Проекта

При необходимости заключительная область Нового диалогового окна Проекта позволяет Вам поместить свой проект в файловую систему и создать репозиторий управления исходным кодом. Для получения дополнительной информации о процессе создания проекта XCode, посмотрите, Запускают Проект в Обзоре XCode.

Не пишущий дополнительного кода, можно скомпилировать и выполнить приложение. При первом запуске приложения Вы видите документ без названия с пустым окном. Команды меню File все делают что-то разумное, такое как перевод в рабочее состояние диалогового окна Сохранения или Открывают диалоговое окно. Поскольку Вы еще не определили типов или реализовали загрузку и сохранение, Вы не можете открыть или сохранить что-либо, и реализации по умолчанию выдают исключение.

Создайте свой пользовательский интерфейс окна документа

Для создания пользовательского интерфейса для окна документа, в области навигатора проекта, щелкают по файлу пера, названному с Вашим NSDocument разделите имя на подклассы с расширением .xib. Это открывает файл в Интерфейсном Разработчике, редакторе XCode, обеспечивающем графический интерфейс для создания файлов пользовательского интерфейса. Можно перетащить элементы пользовательского интерфейса на представление окна документа от Интерфейсной Библиотеки объектов Разработчика в служебной области. Если объекты в окне документа требуют выходов и действий, добавьте их к Вашему NSDocument подкласс. Соедините эти действия и выходы через значок File's Owner в списке заполнителей в Интерфейсном прикреплении Разработчика. Если Ваши объекты документа взаимодействуют с другими пользовательскими объектами, такими как объекты модели, выполняющие специализированные вычисления, определяющие те объекты в Интерфейсном Разработчике и делающие любые необходимые соединения с ними.

Поэтапные инструкции для соединения пунктов меню к методам действия в Вашем коде даны в Пользовательских интерфейсах Редактирования в Обзоре XCode.

Рассмотрите свои команды панели меню приложения

Таблица 3-1 перечисляет соединения действия первого респондента меню File, существующие в шаблоне.

Табличные 3-1  Команды меню Файла в основанном на документе шаблоне приложений

Команда меню File

Действие первого респондента

Новый

newDocument:

Открытый

openDocument:

Откройте Recent> Clear Menu

clearRecentDocuments:

Близко

performClose:

Сохраните/Сохраните Версию

saveDocument:

Вернитесь документ

revertDocumentToSaved:

Установка страницы

runPageLayout:

Печать

printDocument:

После того, как документ был сохранен впервые, команда 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 из появляющегося контекстного меню.

Рисунок 3-2  информационный редактор списка свойств

Для нового основанного на документе приложения необходимо создать тип документа с именем и расширением, которые целесообразны для приложения. Можно добавить больше типов также, один для каждых из типов документов дескрипторы приложения. Самый важный тип документа приложения должен быть перечислен сначала в списке типов. Это - тип это NSDocumentController использование по умолчанию, когда пользователь просит новый документ.

Самым важным значением типа документа является свой Uniform Type Identifier (UTI), строка, однозначно определяющая тип данных, содержавшихся в документе для всех приложений и служб для положений. UTI документа соответствует LSItemContentTypes введите информационный список свойств. UTI используется в качестве программируемого имени типа NSDocument и NSDocumentController. При помощи UTIs приложения избегают большой части сложности, ранее требуемой обработать разрозненные виды информации о типе файла в системе, включая расширения файла, типы MIME и коды типа HFS (типы OS).

Документ UTI может быть определен системой, как показано в Объявленных системой Универсальных Идентификаторах типов в Универсальной Ссылке Идентификаторов типов или основанном на документе приложении, может объявить свой собственный UTI. Такой пользовательский UTIs должен также быть экспортирован для создания системы, знающей о них, как описано в Экспорте Пользовательская информация о Типе документа.

Для объявления типа документа в XCode выполните следующие шаги:

  1. Выберите проект в навигаторе проекта.

  2. Выберите цель и щелкните по вкладке Info.

  3. Нажмите кнопку Add (+) в правом нижнем углу области редактора и выберите Add Document Type из всплывающего меню.

  4. Щелкните по треугольнику рядом с «Неназванным» для раскрытия полей свойства.

Также можно выбрать Info.plist файл в навигаторе проекта, щелкните в области редактора и выберите Editor> Add Item для добавления свойств типа документа непосредственно к файлу списка свойств, как показано на рисунке 3-2. Выберите Editor> Show Raw Keys и Values для раскрытия фактических ключевых имен.

Добавьте свойства, показанные в Таблице 3-2.

Табличные 3-2  Свойства, определяющие тип документа (CFBundleDocumentTypes)

Ключ

Поле Xcode (идентификатор Info.plist)

Значение

LSItemContentTypes

Идентификатор

Массив строк UTI. Как правило, только один указан на тип документа. Строка UTI должна быть разъяснена явно.

NSDocumentClass

Класс (какао класс NSDocument)

Строка, указывающая NSDocument разделите на подклассы имя, соответствующее этому типу документа.

CFBundleTypeRole

Роль

Строка, указывающая роль приложение относительно этого типа документа. Возможные значения являются Редактором, Средством просмотра, Shell, Генератором Беглого взгляда или Ни одним.

NSExportableTypes

(Экспортный тип UTIs)

Массив строк, указывающих UTIs, определяющие поддерживаемый тип файла, в который этот документ может экспортировать свое содержание.

LSTypeIsPackage

Пакет (Документ является пакетом или пакетом),

Булево значение, указывающее, распределяется ли документ как пакет. Если NO, опустите это значение.

CFBundleTypeIconFile

Значок (имя файла значка)

Строка, указывающая имя файла ресурсов значка (расширение .icns) связаться с этим типом документа. Файл ресурсов значка содержит повторные изображения в различных разрешениях.

CFBundleTypeName

Имя (имя типа документа)

Строка, указывающая абстрактное имя типа документа.

LSHandlerRank

Разряд обработчика

Строка, указывающая, как Launch Services оценивает это приложение среди тех, которые объявляют себя редакторы или средства просмотра документов этого типа. Возможные значения, в порядке приоритета, Owner, Alternate, и None.

Для получения дополнительной информации об этих и других ключах типа документа, см. «CFBundleDocumentTypes» в информационной Ключевой Ссылке Списка свойств.

Экспортируйте пользовательскую информацию о типе документа

При определении пользовательского типа документа с помощью его собственного UTI необходимо экспортировать UTI. Для объявления типа документа в XCode выполните следующие шаги:

  1. Выберите проект в области навигатора проекта.

  2. Выберите цель и щелкните по вкладке Info.

  3. Нажмите кнопку Add (+) в правом нижнем углу области редактора и выберите Add Exported UTI из всплывающего меню.

  4. Щелкните по треугольнику рядом с «Неназванным» для раскрытия полей свойства.

Добавьте свойства, показанные в Таблице 3-3.

Табличные 3-3  Свойства, определяющие экспортируемый тип документа (UTExportedTypeDeclarations)

Ключ

Поле Xcode (идентификатор Info.plist)

Значение

UTTypeDescription

Описание

Строка, описывающая этот тип документа.

UTTypeIdentifier

Идентификатор

UTI экспортируемого типа документа.

UTTypeIconFile

Значок (Имя файла значка)

Строка, указывающая имя файла значка типа документа.

UTTypeConformsTo

Соответствует (Соответствует UTIs),

Массив строк, представляющих UTIs, которому соответствует тип документа.

UTTypeTagSpecification

Расширения (эквивалентные типы)

Массив строк называют public.filename-extension содержа расширения файла, соответствующие типу документа.

Для получения дополнительной информации об этих и других экспортируемых ключах свойства типа, посмотрите Объявление Новых Универсальных Идентификаторов типов в Универсальном Обзоре Идентификаторов типов.

Для получения информации о типах документов в альтернативных основанных на документе проектах приложения посмотрите Многократное Использование Типов документов Многократные Подклассы NSDocument и Дополнительные Соображения Типа документа.

Реализуйте подкласс NSDocument

Каждое основанное на документе приложение, использующее архитектуру документа, должно создать по крайней мере один подкласс NSDocument. Необходимо переопределить некоторых NSDocument методы (среди нескольких выбора), и необходимо переопределить несколько других в определенных ситуациях. Подробные данные, объясняющие, как реализовать Ваш NSDocument подкласс находится в Создании Подкласса NSDocument.

Создайте любые дополнительные пользовательские классы

Архитектура документа Какао, как воплощено прежде всего в NSDocument, NSDocumentController, и NSWindowController, служит операционной основой для приложений, включая сложные механизмы обработки документов. Однако необходимо добавить способы поведения, дифференцирующие приложение и удовлетворяющие ему его конкретной цели. Очень специализированное поведение может быть реализовано в Вашем NSDocument подкласс, в методах делегата, пользовательские классы добавили к Вашему проекту и подклассам NSDocumentController и NSWindowController если необходимо расширить возможности любого из тех классов. Обычно необходимо использовать пользовательские классы для инкапсуляции логики программы модели данных и контроллеров, поддерживая здоровое разделение MVC.

Для получения дополнительной информации о проекте приложения, см. Руководство по программированию Приложения Mac.