Основанный на документе предварительный рейс приложения
Для большинства разработчиков, подавая основанную на документе заявку не требует намного большего усилия, чем подавание заявки, которая не является базируемым документом. Основное различие - то, что необходимо создать пользовательский подкласс UIDocument
и затем управляйте документом через фазы его жизни во время выполнения, включая его интеграцию с хранением iCloud. Эта глава обрисовывает в общих чертах те специфичные для документа задачи, выполняемые большинством приложений, и описывает общие шаги для создания и конфигурирования основанного на документе проекта приложения в iOS.
Что необходимо сделать для подавания основанной на документе заявки
Для создавания основанного на документе приложения необходимо выполнить следующие задачи:
Создайте пользовательский подкласс
UIDocument
это служит основой UIKit со снимком данных документа, и это инициализирует объекты модели документа от содержания файла документа.Создание Пользовательского Объекта документа описывает переопределения требуемого метода и, если данные документа должны храниться как пакет файла, объясняет, как пойти об использовании
NSFileWrapper
объекты для данных документа.Позвольте пользователям создавать новые документы и выбирать и открывать существующие. Необходимо также реализовать дополнительные задачи заключительных документов и удаления выбранных документов.
Обратите внимание на то, что последующая задача к созданию или открытию документа выводит на экран содержание документа в представлении.
Создание Нового Документа, Открытие и Закрытие Документа и Удаление Документа описывают требования и процедуры для этих задач. Эти обсуждения также включают примеры управления дисплеем данных документа.
Управление отменой реализации или отслеживание изменений для включения автоматического сохранения данных документа (saveless модель).
Посмотрите Операции Отслеживания изменений и Отмены для подробных данных.
Поместите документы — обычно выбранных пользователями — в хранение iCloud. Также удалите документы из хранения iCloud, когда пользователи запросят это.
Движущиеся Документы и от Хранения iCloud обсуждают эти процедуры.
Наблюдайте уведомления об изменениях в состоянии документа и, если ошибка происходит, ответьте соответственно.
Контроль Изменений состояния документа и Ошибок из-за неправильного обращения описывает общую процедуру для того, чтобы сделать это.
Если конфликты между различными версиями документа происходят, уведомляют пользователя и предлагают способы разрешить конфликты.
Разрешение Конфликтов Версии документа описывает, как уведомить пользователей конфликтов версий и обсуждает стратегии разрешения этих конфликтов.
Можно также добавить дополнительные опции к основанному на документе приложению, такие как возможность печати документа, проверка правописания это или пользование электронной почтой его другим.
Если Ваше приложение имеет высокие требования — например, инкрементное чтение, и запись больших файлов документов или контакт с форматами данных документа кроме поддерживаемых — видят Ссылку класса 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
подкласс с типом документа.
Тип документа UTI может быть определен системой; посмотрите Объявленные системой Универсальные Идентификаторы типов в Универсальной Ссылке Идентификаторов типов для списка этих общих идентификаторов. Основанное на документе приложение может также определить свой собственный UTI для его документов (и часто делает). Если это действительно объявляет пользовательский UTI, это должно также экспортировать это UTI для создания операционной системы, знающей о нем.
Объявите тип документа
Для объявления типа документа в XCode запустите путем нажатия кнопки Add в настройках Info цели и выберите Add Document Type из всплывающего меню. Щелкните по треугольнику рядом с Неназванным, чтобы раскрыть поля свойства и добавить свойства в Таблице 2-1.
Ключ | Поле Xcode | Значение и комментарии |
---|---|---|
| Типы | Массив строк UTI. Только один обычно указывается на тип документа. |
| Имя | Дополнительное имя для типа документа. |
| Значок | Массив путей к файлам образа значка в комплекте приложений. |
| В таблице «Additional document type properties». | Массив расширений файла соединил с документом UTI. |
| В таблице «Additional document type properties». |
|
| В таблице «Additional document type properties». | Если данные документа хранятся в пакете файла, установите это свойство в |
Для получения дополнительной информации об этих ключах, посмотрите CFBundleDocumentTypes в информационной Ключевой Ссылке Списка свойств.
Когда Вы закончили вводить свойства для типа документа, область Document Types XCode должна выглядеть подобной примеру на рисунке 2-2.
Приложение могло иметь многократные типы документов — например, приложение обработки текстов могло иметь тип для регулярных (пустых) документов и другой тип для предварительно отформатированных документов. Для каждого типа необходимо пройти через процедуру, данную выше.
Экспорт документа UTI
При определении пользовательского UTI для документов необходимо также экспортировать его. Для экспорта типа документа в XCode запустите путем нажатия кнопки Add в настройках Info цели и выберите Add Exported UTI из всплывающего меню. Щелкните по треугольнику рядом с Неназванным, чтобы раскрыть поля свойства и добавить свойства в Таблице 2-2.
Ключ | Поле Xcode | Значение и комментарии |
---|---|---|
| Идентификатор | Пользовательский документ UTI, строка. |
| Соответствует | UTI, которому соответствует пользовательский документ UTI. Если представление данных является пакетом файла, указать |
| Описание | Описание экспортируемого (дополнительного) типа. |
| В таблице «Additional exported UTI properties». | Создайте названный массив |
Для получения дополнительной информации об этих ключах, посмотрите CFBundleDocumentTypes в информационной Ключевой Ссылке Списка свойств.
Когда Вы закончили вводить свойства для типа документа, область Exported UTIs XCode должна выглядеть подобной примеру на рисунке 2-3.