Основанный на документе предварительный рейс приложения

Для большинства разработчиков, подавая основанную на документе заявку не требует намного большего усилия, чем подавание заявки, которая не является базируемым документом. Основное различие - то, что необходимо создать пользовательский подкласс UIDocument и затем управляйте документом через фазы его жизни во время выполнения, включая его интеграцию с хранением iCloud. Эта глава обрисовывает в общих чертах те специфичные для документа задачи, выполняемые большинством приложений, и описывает общие шаги для создания и конфигурирования основанного на документе проекта приложения в iOS.

Что необходимо сделать для подавания основанной на документе заявки

Для создавания основанного на документе приложения необходимо выполнить следующие задачи:

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

Если Ваше приложение имеет высокие требования — например, инкрементное чтение, и запись больших файлов документов или контакт с форматами данных документа кроме поддерживаемых — видят Ссылку класса UIDocument. Все эти усовершенствованные задачи включают переопределение UIDocument методы.

Создание и конфигурирование проекта

Когда Вы создаете проект XCode для своего основанного на документе приложения, выбираете подходящий шаблон. (Обратите внимание на то, что нет никакого шаблона в частности для основанных на документе приложений.) Обычно Вы хотите, чтобы первое представление приложения было тем, в котором пользователи могут выбрать существующие документы и создать новые. Поскольку шаблон Master-Detail Xcode подходит с этой целью, он используется в примерах кода всюду по этому документу. Этот шаблон дает Вам начальное табличное представление для iPhone и представление разделения для iPad. Ваш проект должен использовать раскадровку, так, несомненно, должен будет выбрать эту опцию.

На основе проекта для Вашего приложения (см. Разработку Основанного на документе Приложения), создайте подклассы контроллера представления, которых требует Ваше приложение. Все, в чем Вы нуждаетесь, минимально объявляется заголовком и исходными файлами в этой точке. Затем создайте пользовательский интерфейс своего приложения в раскадровке проекта (или раскадровки, если Ваш повсеместное применение); свяжите свои пользовательские контроллеры представления с заполнителями контроллера представления в раскадровке.

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

Как iOS Идентифицирует Документы Вашего Приложения

Самый важный атрибут объекта документа в iOS является своим файлом URL (fileURL). URL файла важен среди других причин, потому что это говорит iOS, какие приложения понимают формат документа. Файл URL заканчивается расширением (например, html) и это расширение является соответствующим Универсальному Идентификатору типа (например, public.html). Uniform Type Identifier (UTI) является основным идентификатором типа документа. Используя расширение, UIDocument ищет тип документа UTI (как показано на рисунке 2-1) и присваивает его fileType свойство. В отличие от основанных на документе приложений в OSX, те в iOS не должны связываться UIDocument подкласс с типом документа.

Рисунок 2-1  iOS, ищущий документ UTI от расширения его файла URL

Тип документа UTI может быть определен системой; посмотрите Объявленные системой Универсальные Идентификаторы типов в Универсальной Ссылке Идентификаторов типов для списка этих общих идентификаторов. Основанное на документе приложение может также определить свой собственный UTI для его документов (и часто делает). Если это действительно объявляет пользовательский UTI, это должно также экспортировать это UTI для создания операционной системы, знающей о нем.

Объявите тип документа

Для объявления типа документа в XCode запустите путем нажатия кнопки Add в настройках Info цели и выберите Add Document Type из всплывающего меню. Щелкните по треугольнику рядом с Неназванным, чтобы раскрыть поля свойства и добавить свойства в Таблице 2-1.

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

Ключ

Поле Xcode

Значение и комментарии

LSItemContentTypes

Типы

Массив строк UTI. Только один обычно указывается на тип документа.

CFBundleTypeName

Имя

Дополнительное имя для типа документа.

CFBundleTypeIconFiles

Значок

Массив путей к файлам образа значка в комплекте приложений.

CFBundleTypeExtensions

В таблице «Additional document type properties».

Массив расширений файла соединил с документом UTI.

LSHandlerRank

В таблице «Additional document type properties».

Owner, Alternate, None. (Обычно Owner).

LSTypeIsPackage

В таблице «Additional document type properties».

Если данные документа хранятся в пакете файла, установите это свойство в YES. Иначе опустите.

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

Когда Вы закончили вводить свойства для типа документа, область Document Types XCode должна выглядеть подобной примеру на рисунке 2-2.

  Спецификация рисунка 2-2 типа документа в XCode

Приложение могло иметь многократные типы документов — например, приложение обработки текстов могло иметь тип для регулярных (пустых) документов и другой тип для предварительно отформатированных документов. Для каждого типа необходимо пройти через процедуру, данную выше.

Экспорт документа UTI

При определении пользовательского UTI для документов необходимо также экспортировать его. Для экспорта типа документа в XCode запустите путем нажатия кнопки Add в настройках Info цели и выберите Add Exported UTI из всплывающего меню. Щелкните по треугольнику рядом с Неназванным, чтобы раскрыть поля свойства и добавить свойства в Таблице 2-2.

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

Ключ

Поле Xcode

Значение и комментарии

UITypeIdentifier

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

Пользовательский документ UTI, строка.

UTTypeConformsTo

Соответствует

UTI, которому соответствует пользовательский документ UTI. Если представление данных является пакетом файла, указать com.apple.package.

UTTypeDescription

Описание

Описание экспортируемого (дополнительного) типа.

UTTypeTagSpecification

В таблице «Additional exported UTI properties».

Создайте названный массив public.filename-extension. Тогда добавьте как элементы все расширения файла документа.

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

Когда Вы закончили вводить свойства для типа документа, область Exported UTIs XCode должна выглядеть подобной примеру на рисунке 2-3.

Рисунок 2-3  , Экспортирующий пользовательский документ UTI в XCode