UIDocument
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSFilePresenter -
NSObjectProtocol -
Печатаемый -
NSFilePresenter -
NSObject
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 5.0 и позже.
UIDocument класс является абстрактным базовым классом для управления данными документов.
Использующие приложения UIDocument и его базовая архитектура извлекает много пользы для их документов:
Асинхронное чтение и запись данных по очереди фоновых задач. Скорость отклика Вашего приложения пользователям таким образом незатронута при чтении и записи, что операции имеют место.
Скоординированное чтение и запись файлов документов, автоматически интегрирующаяся с облачными сервисами.
Поддержка обнаружения конфликтует между различными версиями документа (если это происходит).
Безопасное сохранение данных документа путем записи данных сначала во временный файл и затем замены файла текущего документа им.
Автоматическое сохранение данных документа в подходящие моменты; этот механизм включает поддержку контакта с, приостанавливают способы поведения.
В шаблоне разработки Контроллера представления Модели, a UIDocument объект является объектом модели или объектом контроллера модели — это управляет данными документа или совокупных объектов модели, вместе составляющих данные документа. Вы обычно соединяете его с целью контроллер, управляющий представлением, представляющим содержание документа. UIDocument не предоставляет поддержки для управления представлениями документа.
Основанные на документе приложения включают тех, которые могут генерировать многократные документы, каждого с его собственным расположением файловой системы. Основанное на документе приложение должно создать подкласс UIDocument для его документов. См. “Примечания Разделения на подклассы”, ниже, для подробных данных.
Основной атрибут документа в UIDocument архитектура является своим файлом URL. Когда Вы инициализируете экземпляр своего подкласса документа путем вызова initWithFileURL:, необходимо передать файл URL, определяющий местоположение файла документа в тестовой среде приложения. UIDocument определяет тип файла (Универсальный Идентификатор типа, связанный с расширением файла) и название документа (компонент имени файла) от файла URL. Можно переопределить методы доступа fileType и localizedName свойства для предоставления различных значений.
Следующие основы жизненный цикл типичного документа (см. “Примечания Разделения на подклассы” для подробных данных реализации):
Вы создаете новый документ или открываете существующий документ.
Для создания нового документа выделите и инициализируйте экземпляр подкласса и затем вызовите
saveToURL:forSaveOperation:completionHandler:на экземпляре.Для открытия существующего документа (выбранный пользователем) выделите и инициализируйте экземпляр подкласса и затем вызовите
openWithCompletionHandler:на экземпляре.
Пользователь редактирует документ.
Поскольку пользователь редактирует, изменения дорожки в документе.
UIDocumentпериодически примечания, когда там не сохраняются изменения и пишет данные документа в его файл.Пользователь запрашивает что документ быть интегрированным с (дополнительными) облачными сервисами.
Необходимо включить документ для «облачного» хранилища. Необходимо также разрешить любые конфликты между различными версиями того же документа.
Пользователь закрывает документ.
Вызвать
closeWithCompletionHandler:на экземпляре документа.UIDocumentесли существуют какие-либо несохраненные изменения, сохраняет документ.
Типичное основанное на документе приложение вызывает openWithCompletionHandler:, closeWithCompletionHandler:, и saveToURL:forSaveOperation:completionHandler: на основном потоке. То, когда чтение или сохраняет работу, начатую этими методами, завершает, блок обработчика завершения выполняется на той же очереди отгрузки, на которой метод был вызван, позволив Вам выполнить любые задачи, зависящие от чтения или сохранить работу. Если работа не успешна, NOfalse передается в блок завершения-hander.
Реализация протокола NSFilePresenter
UIDocument класс принимает NSFilePresenter протокол. Когда другой клиент пытается считать документ a UIDocument- основанное приложение, то чтение приостановлено до UIDocument объекту дают возможность сохранить любые изменения, внесенные в документ.
Несмотря на то, что некоторые реализации ничего не делают, UIDocument реализации все NSFilePresenter методы. В частности, UIDocument:
Реализации
relinquishPresentedItemToReader:передать входящий блокperformAsynchronousFileAccessUsingBlock:.Реализации
relinquishPresentedItemToWriter:проверять, изменилась ли дата модификации файла; если файл является более новым, чем прежде, он вызываетrevertToContentsOfURL:completionHandler:со значениемfileURLкак параметр URL.Реализации
presentedItemDidMoveToURL:обновить файл документа URL (fileURL).
В Вашем UIDocument подкласс, если Вы переопределяете a NSFilePresenter метод можно всегда вызывать реализацию суперкласса (super).
Разделение на подклассы примечаний
Каждое основанное на документе приложение должно создать подкласс UIDocument чьи экземпляры представляют его документы. Требования разделения на подклассы для большинства приложений просты:
Для записи операций реализуйте
contentsForType:error:метод для обеспечения снимка данных документа. Данные должны быть в формеNSDataобъект (для плоских файлов) илиNSFileWrapperобъект (для пакетов файла). Операции записи обычно инициируются через функцию автосохраненияДля чтения операций реализуйте
loadFromContents:ofType:error:метод к получаетNSDataилиNSFileWrapperвозразите и инициализируйте структуры данных приложения с ним.Реализуйте отслеживание изменений для активации сохраняющейся автоматически опции. Посмотрите Отслеживание изменений для подробных данных.
Когда облачные сервисы включены для документа, конфликтов решения между различными версиями документа. Посмотрите Разрешение конфликтов и Обработку ошибок для подробных данных.
contentsForType:error: и loadFromContents:ofType:error: методы обычно вызывают на основной очереди. Более в частности:
contentsForType:error:метод вызывают на очереди чтоsaveToURL:forSaveOperation:completionHandler:к методу обратились; запись данных имеет место на фоновом потокеloadFromContents:ofType:error:метод вызывают на очереди чтоopenWithCompletionHandler:к методу обратились
Если у Вас есть особые требования для чтения и записи данных документа для который contentsForType:error: и loadFromContents:ofType:error: методы не будут достаточны, можно переопределить другие методы UIDocument класс. Посмотрите Усовершенствованные Переопределения для обсуждения этих требований и методов.
Отслеживание изменений
Активировать сохраняющуюся автоматически опцию UIDocument, когда пользователи вносят изменения в документ, необходимо уведомить его. UIDocument периодически проверки, ли hasUnsavedChanges возвраты метода YEStrue; если это делает, это инициирует работу сохранения для документа.
Существует два основных способа реализовать отслеживание изменений в Вашем UIDocument подкласс:
Вызовите методы
NSUndoManagerкласс для реализации отмены и восстановления для документа. Можно получить доступ к значению по умолчаниюNSUndoManagerобъект отundoManagerсвойство. Это - предпочтительный подход, специально для существующих приложений, уже поддерживающих отмену и восстановление.Вызовите
updateChangeCount:метод в надлежащих соединениях в Вашем коде.
Разрешение конфликтов и обработка ошибок
A UIDocument объект имеет определенное состояние в любой момент в его жизненном цикле. Можно проверить текущее состояние путем запросов documentState свойство, и уведомляется об изменениях путем наблюдения UIDocumentStateChangedNotification уведомление.
Если документ включен для iCloud, важно проверить на конфликтные версии и попытаться разрешить конфликты. Сделайте это путем прислушивания UIDocumentStateChangedNotification уведомление и затем проверяющий, ли состояние документа UIDocumentStateInConflict. Это состояние указывает, что там конфликтуют версии документа, к которому можно получить доступ путем вызова NSFileVersion метод класса unresolvedConflictVersionsOfItemAtURL:, передача в файле документа URL. Если можно разрешить конфликт правильно без взаимодействия с пользователем, сделайте так. Иначе, дискретно уведомьте пользователя, что конфликт существует, и позвольте им выбрать, как разрешить его. Возможные подходы включают:
Отображение конфликтных версий, от которых пользователь может выбрать одну или обе версии для хранения
Отображение объединенной версии и предоставление пользователю опция выбрать его
Отображение дат модификации файла и предоставление пользователю опция выбрать один или оба
Состояние документа, в дополнение к указанию конфликта межфайла, может указать ошибки. Например, UIDocumentStateClosed указывает ошибку в чтении, и UIDocumentStateSavingError указывает ошибку в сохранении или возвращении документ. Ваше приложение уведомляется относительно чтения и записи ошибок через success параметр передал в обработчики завершения openWithCompletionHandler:, closeWithCompletionHandler:, revertToContentsOfURL:completionHandler:, и saveToURL:forSaveOperation:completionHandler: методы.
Можно обработать ошибки путем вызова или реализации handleError:userInteractionPermitted: метод; этот метод вызывают реализации по умолчанию openWithCompletionHandler: и saveToURL:forSaveOperation:completionHandler: методы, когда a UIDocument возразите встречается с чтением или записью ошибки, соответственно. Если ситуация разрешает, пытаясь восстановиться с ошибки, можно обработать чтение, сохранить, и ошибки реверсии путем информирования пользователя и.
Обязательно считайте описание для contentsForType:error: метод для его руководства на ошибках из-за неправильного обращения встретился во время сохранения документа.
Усовершенствованные переопределения
Если Вы, приложение имеет особые требования для чтения или записи данных документа, это может переопределенные методы UIDocument кроме loadFromContents:ofType:error: и contentsForType:error:. Эти требования часто включают следующее:
Инкрементное чтение и запись больших файлов данных
Переопределите
readFromURL:error:иwriteContents:toURL:forSaveOperation:originalContentsURL:error:методы, соответственноПользовательские представления данных документа (т.е. не a
NSDataилиNSFileWrapperобъект)Переопределите
readFromURL:error:метод (при чтении данных документа) иwriteContents:toURL:forSaveOperation:originalContentsURL:error:метод (при записи данных документа).Выполнение действий прежде или после чтения или записи данных
Переопределение
openWithCompletionHandler:иsaveToURL:forSaveOperation:completionHandler:Пользовательский подход к безопасному сохранению
Переопределите
writeContents:andAttributes:safelyToURL:forSaveOperation:error:метод.Изменение типа файла документа, прежде чем это будет сохранено
Переопределите
savingFileTypeметод для возврата типа файла кроме значения по умолчанию (fileType). Примером этого является документ RTF, который, после того, как пользователь добавляет изображение к нему, должен быть сохранен как документ RTFD.
Если Вы переопределяете большинство этих методов, знают, что все чтение и запись данных документа должны быть сделаны на очереди фоновых задач и должны быть скоординированы с другими попытками читать из и записать в тот же файл документа. Из-за этого необходимо обычно вызывать реализацию суперкласса (super) как часть Вашего переопределения, и если Вы вызываете другой UIDocument методы необходимо обычно вызывать их в блоке, передали в вызов performAsynchronousFileAccessUsingBlock: метод. Считайте описания метода для подробных данных.
Соображения потокобезопасности
Если Вы переопределяете какое-либо из свойств атрибута документа (перечисленный при Доступе к Атрибутам документа) путем переопределения связанных методов доступа, знают, что платформа UIKit может вызвать эти методы доступа для фонового потока. Таким образом Ваша переопределяющая реализация должна быть ориентирована на многопотоковое исполнение.
-
Возвращает объект документа, инициализированный с его расположением файловой системы.
Параметры
urlURL файла, идентифицирующий расположение в тестовой среде приложения, где должны быть записаны данные документа. Передача в
nilили пустой URL приводит к броскуNSInvalidArgumentException.Возвращаемое значение
A
UIDocumentобъект илиnilесли не мог бы быть создан объект.Обсуждение
После создания объекта документа, и никакой файл еще не существует для него, необходимо затем вызвать
saveToURL:forSaveOperation:completionHandler:записать документ его расположению файловой системы в тестовой среде приложения. Еслиurlопределяет местоположение существующего файла документа, вызватьopenWithCompletionHandler:после создания объекта документа. Второй параметр этого метода, постоянная работа сохранения, должен бытьUIDocumentSaveForCreatingкогда еще нет никакого файла документа. В обработчике завершения, если Вы хотите, чтобы документ автоматически синхронизировался с другими устройствами и компьютерами, на которых установлено приложение, необходимо вызвать метод NSFileManagersetMobileSynchEnabled:forItemAtURL:destinationDirectory:replacementURL:error:.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
См. также
-
fileURLСвойствоURL файла, с которым был инициализирован документ. (только для чтения)
Обсуждение
URL идентифицирует расположение документа в тестовой среде приложения. Это включает расширение файла, от которого определяется тип файла.
UIKit устанавливает это свойство, прежде чем это вызовет обработчики завершения
openWithCompletionHandler:,saveToURL:forSaveOperation:completionHandler:, иrevertToContentsOfURL:completionHandler:. Если, за пределами этих методов или их обработчиков завершения, Вы хотите ожидать каких-либо незаконченных операций файла для завершения перед доступом к этому свойству можно вызватьperformAsynchronousFileAccessUsingBlock:и доступ значение свойства в блочном параметре.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
localizedNameСвойствоЛокализованное имя документа. (только для чтения)
Объявление
Swift
var localizedName: String { get }Objective C
@property(readonly, copy) NSString *localizedNameОбсуждение
По умолчанию UIKit получает значение из компонента имени файла
fileURL. Можно переопределить метод доступа метода get этого свойства обеспечить пользовательское имя для представления пользователю, такой как в строках ошибки. См. “Примечания Разделения на подклассы” в описании класса для переопределяющего уведомления.UIKit устанавливает это свойство, прежде чем это вызовет обработчики завершения
openWithCompletionHandler:,saveToURL:forSaveOperation:completionHandler:, иrevertToContentsOfURL:completionHandler:. Если, за пределами этих методов или их обработчиков завершения, Вы хотите ожидать каких-либо незаконченных операций файла для завершения перед доступом к этому свойству можно вызватьperformAsynchronousFileAccessUsingBlock:и доступ значение свойства в блочном параметре.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
fileTypeСвойствоТип файла документа. (только для чтения)
Объявление
Swift
var fileType: String { get }Objective C
@property(readonly, copy) NSString *fileTypeОбсуждение
Тип файла является универсальным идентификатором типа (UTI). UIKit получает UTI из компонента расширения файла
fileURL.UIKit устанавливает это свойство, прежде чем это вызовет обработчики завершения
openWithCompletionHandler:,saveToURL:forSaveOperation:completionHandler:, иrevertToContentsOfURL:completionHandler:. Если, за пределами этих методов или их обработчиков завершения, Вы хотите ожидать каких-либо незаконченных операций файла для завершения перед доступом к этому свойству можно вызватьperformAsynchronousFileAccessUsingBlock:и доступ значение свойства в блочном параметре.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
fileModificationDateСвойствоДата и время файл документа была в последний раз изменена.
Объявление
Swift
@NSCopying var fileModificationDate: NSDate?Objective C
@property(copy) NSDate *fileModificationDateОбсуждение
Дата модификации обновляется
openWithCompletionHandler:,saveToURL:forSaveOperation:completionHandler:, иrevertToContentsOfURL:completionHandler:методы. Его значениеnilесли ни один из этих методов не завершился успешно, по крайней мере, один раз. При переопределении какого-либо из этих методов, несомненно, необходимо будет установить это свойство в реализации.UIKit устанавливает это свойство, прежде чем это вызовет обработчики завершения
openWithCompletionHandler:,saveToURL:forSaveOperation:completionHandler:, иrevertToContentsOfURL:completionHandler:. Если, за пределами этих методов или их обработчиков завершения, Вы хотите ожидать каких-либо незаконченных операций файла для завершения перед доступом к этому свойству можно вызватьperformAsynchronousFileAccessUsingBlock:и доступ значение свойства в блочном параметре.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
documentStateСвойствоВозвращает текущее состояние документа. (только для чтения)
Объявление
Swift
var documentState: UIDocumentState { get }Objective C
@property(readonly) UIDocumentState documentStateОбсуждение
Когда изменения состояния документа,
UIDocumentобъектно-ориентированные памяти постоянная идентификация нового состояния в этом свойстве. Посмотрите перечисление состояния Документа для описаний этих констант. Для получения уведомлений об изменениях в состоянии документа наблюдайтеUIDocumentStateChangedNotificationуведомление.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Асинхронно закрывает документ после сохранения любых изменений.
Объявление
Swift
func closeWithCompletionHandler(_completionHandler: ((Bool) -> Void)?)Objective C
- (void)closeWithCompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
completionHandlerБлок с кодом для выполнения после save-close завершает. Блок не возвращает значения и имеет один параметр:
successYEStrueесли кто-либо сохраняет работу, успешно выполняется, иначеNOfalse.Блок вызывается на основную очередь.
Обсуждение
Вы вызываете этот метод для начала последовательности вызовов метода, сохраняющей документ безопасно и асинхронно. Расположение файловой системы документа происходит из
fileURLсвойство. После того, как работа сохранения завершает, код вcompletionHandlerвыполняется. В этом коде можно закрыть документ — например, путем удаления представления документа из экрана. Кроме того, если работа сохранения не успешно выполнялась (successNOfalse), можно ответить надлежащим способом.Вы обычно не переопределяли бы этот метод. Реализация по умолчанию вызывает
autosaveWithCompletionHandler:метод.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Переопределите этот метод для возврата данных документа, которые будут сохранены.
Объявление
Swift
func contentsForType(_typeName: String, erroroutError: NSErrorPointer) -> AnyObject?Параметры
typeNameТип файла документа, Uniform Type Identifier (UTI). Эта строка обычно происходит из
fileTypeсвойство. Если Вы хотите сохранить документ под различным UTI, можно переопределитьsavingFileTypeметод.outErrorЕсли Вы не можете возвратить данные документа, возвратитесь косвенно
NSErrorобъект, инкапсулирующий причины, Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
Данные документа, которые будут сохранены, или
nilесли Вы не можете возвратить данные документа. Возвращенный объект обычно является экземпляромNSDataкласс для плоских файлов илиNSFileWrapperкласс для пакетов файла. Если Вы возвращаетесьnil, необходимо также возвратить ошибочный объект вoutError.Если Вы возвращаете объект кроме
NSDataилиNSFileWrapperобъект, необходимо переопределитьwriteContents:andAttributes:safelyToURL:forSaveOperation:error:илиwriteContents:toURL:forSaveOperation:originalContentsURL:error:метод для обработки записи данных.Обсуждение
Когда Вы разделяете на подклассы
UIDocument, переопределите этот метод для обеспечения UIKit данными документа для сохранения.Этот метод вызывают на очереди что
saveToURL:forSaveOperation:completionHandler:к методу обратились (обычно, основная очередь). Запись данных происходит на очереди фоновых задач. Реализация по умолчанию этого метода возвратыnil.Когда Вы возвращаетесь не -
nilзначение вoutErrorпараметр, обработчики завершения для следующих методов не становятся вызванными:Вместо этого в этом случае ошибка доступна Вашему приложению в
handleError:userInteractionPermitted:метод и вUIDocumentStateChangedNotificationуведомление.Если Вы хотите больше управления работой сохранения, чем этот метод обеспечивает — например, если Вы хотите выполнить инкрементную запись данных — переопределение, вместо этого, один из методов записи данных низшего уровня такой как
writeContents:andAttributes:safelyToURL:forSaveOperation:error:илиwriteContents:toURL:forSaveOperation:originalContentsURL:error:. Эти методы вызывают на фоновом потоке.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Сохраняет данные документа к указанному расположению в тестовой среде приложения.
Объявление
Swift
func saveToURL(_url: NSURL, forSaveOperationsaveOperation: UIDocumentSaveOperation, completionHandlercompletionHandler: ((Bool) -> Void)?)Objective C
- (void)saveToURL:(NSURL *)urlforSaveOperation:(UIDocumentSaveOperation)saveOperationcompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
urlФайл URL, идентифицирующий расположение в тестовой среде приложения для записи данные документа в. Как правило, это - URL, полученный из
fileURLсвойство.saveOperationКонстанта, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
completionHandlerБлок с кодом, выполняющимся, когда завершает работа сохранения. Блок не возвращает значения и имеет один параметр:
successYEStrueесли работа сохранения успешно выполняется, иначеNOfalse.Этот блок вызывается на очередь вызова.
Обсуждение
Реализация по умолчанию этого метода сначала вызывает
contentsForType:error:метод синхронно на очереди вызова, чтобы заставить данные документа сохранять. Тогда это вызываетwriteContents:andAttributes:safelyToURL:forSaveOperation:error:метод на очереди фоновых задач для выполнения фактической записи данных к диску.При переопределении этого метода рекомендуется сначала вызвать реализацию суперкласса метода (
super). Если Вы не вызываетеsuper, необходимо сделать две вещи:Реализуйте скоординированную запись при помощи
NSFileCoordinatorкласс.Вызвать
performAsynchronousFileAccessUsingBlock:помещать работу сохранения на очередь фоновых задач. Блочный параметр этого метода должен вызватьwriteContents:andAttributes:safelyToURL:forSaveOperation:error:.
Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
writeContents (_: andAttributes:safelyToURL:forSaveOperation:error:) - writeContents:andAttributes:safelyToURL:forSaveOperation:error:Гарантирует, что данные документа записаны безопасно в указанное расположение в тестовой среде приложения.
Объявление
Swift
func writeContents(_contents: AnyObject, andAttributesadditionalFileAttributes: [NSObject : AnyObject]?, safelyToURLurl: NSURL, forSaveOperationsaveOperation: UIDocumentSaveOperation, erroroutError: NSErrorPointer) -> BoolObjective C
- (BOOL)writeContents:(id)contentsandAttributes:(NSDictionary *)additionalFileAttributessafelyToURL:(NSURL *)urlforSaveOperation:(UIDocumentSaveOperation)saveOperationerror:(NSError **)outErrorПараметры
contentsДанные документа для записи в диск. Как правило, данные инкапсулируются
NSDataобъект (если плоский файл) илиNSFileWrapperобъект (если пакет файла).Если объект, инкапсулирующий данные документа, имеет некоторый другой тип, необходимо переопределить этот метод или
writeContents:toURL:forSaveOperation:originalContentsURL:error:выполнять фактическую запись данных.additionalFileAttributesСловарь
NSFileManagerатрибуты файла для присвоения к файлу документа. Реализация по умолчанию получает эти атрибуты файла путем вызоваfileAttributesToWriteToURL:forSaveOperation:error:.urlФайл URL, указывающий расположение файла документа в тестовой среде приложения.
saveOperationКонстанта, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
outErrorЕсли Вы переопределяете этот метод и не можете записать данные документа ни по какой причине, возвратитесь косвенно
NSErrorобъект, инкапсулирующий причины, почему Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YEStrueесли операция записи успешно выполняется, иначеNOfalse.Обсуждение
Этот метод вызывают
saveToURL:forSaveOperation:completionHandler:метод для сохранения данных файла (и связанные атрибуты в случаеNSFileWrapper). Это создает временные файлы и каталоги по мере необходимости так, чтобы успешный сохранил, может быть завершен атомарно и отказавшим, сохраняет, может откатываться чисто. Это вызовы методаwriteContents:toURL:forSaveOperation:originalContentsURL:error:сохранитьcontentsобъект, передавая расположение для нового сохраненного файла вtoURLпараметр и расположение ранее существующего файла вoriginalContentsURLпараметр, если это - работа перезаписи.Если Вы хотите измениться, как данные файла сохраняются, Вы обычно переопределяете
writeContents:toURL:forSaveOperation:originalContentsURL:error:метод вместо этого метода. Кроме того, Вы не должны вызывать этот метод непосредственно, если Вы не переопределяетеsaveToURL:forSaveOperation:completionHandler:метод.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
writeContents (_: toURL:forSaveOperation:originalContentsURL:error:) - writeContents:toURL:forSaveOperation:originalContentsURL:error:Пишут данные документа в диск в расположении песочницы, обозначенном файлом URL.
Объявление
Swift
func writeContents(_contents: AnyObject, toURLurl: NSURL, forSaveOperationsaveOperation: UIDocumentSaveOperation, originalContentsURLoriginalContentsURL: NSURL?, erroroutError: NSErrorPointer) -> BoolObjective C
- (BOOL)writeContents:(id)contentstoURL:(NSURL *)urlforSaveOperation:(UIDocumentSaveOperation)saveOperationoriginalContentsURL:(NSURL *)originalContentsURLerror:(NSError **)outErrorПараметры
contentsДанные документа для записи в диск. Как правило, данные инкапсулируются
NSDataобъект (если плоский файл) илиNSFileWrapperобъект (если пакет файла).Если объект, инкапсулирующий данные документа, имеет некоторый другой тип, необходимо переопределить этот метод или
writeContents:andAttributes:safelyToURL:forSaveOperation:error:выполнять фактическую запись данных.urlФайл URL, указывающий расположение файла документа в тестовой среде приложения.
saveOperationКонстанта, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
originalContentsURLФайл URL, указывающий предыдущее расположение файла документа (если нет
nil).outErrorЕсли Вы переопределяете этот метод и не можете записать данные документа ни по какой причине, возвратитесь косвенно
NSErrorобъект, инкапсулирующий причины, почему Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YEStrueесли операция записи успешно выполняется, иначеNOfalse.Обсуждение
Этот метод вызывают
writeContents:andAttributes:safelyToURL:forSaveOperation:error:записать фактические данные файла. Это передается, объект содержания возвратился из ВашегоcontentsForType:error:реализация. Реализация по умолчанию этого метода поддержкиNSDataилиNSFileWrapperсодержание, прося, чтобы содержание возразило для сохранения себя к соответствующему URL.При переопределении этого метода можно принять решение возвратить другой тип данных от
contentsForType:error:или можно принять решение не переопределитьcontentsForType:error:и генерируйте перезаписываемые данные непосредственно в этом методе. При переопределении этого метода Вы не должны вызывать реализацию суперкласса.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Возвращает тип файла для использования для того, чтобы сохранить документ.
Возвращаемое значение
Uniform Type Identifier (UTI), идентифицирующий тип документа (например, PDF или HTML).
Обсуждение
Реализация по умолчанию возвращает текущий тип файла, полученный из
fileTypeсвойство. Реализация по умолчаниюsaveToURL:forSaveOperation:completionHandler:метод добавляет расширение файла URL, основывающийся на типе файла. Таким образом, если Вы хотите переместить документ новому типу и расширению, можно переопределить этот метод для предоставления того типа файла.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
fileAttributesToWriteToURL (_: forSaveOperation:error:) - fileAttributesToWriteToURL:forSaveOperation:error:Возвращает словарь атрибутов файла для соединения с файлом документа при записи или обновлении его.
Объявление
Swift
func fileAttributesToWriteToURL(_url: NSURL, forSaveOperationsaveOperation: UIDocumentSaveOperation, erroroutError: NSErrorPointer) -> [NSObject : AnyObject]?Objective C
- (NSDictionary *)fileAttributesToWriteToURL:(NSURL *)urlforSaveOperation:(UIDocumentSaveOperation)saveOperationerror:(NSError **)outErrorПараметры
urlФайл URL, определяющий местоположение документа в тестовой среде приложения.
saveOperationКонстанта, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
outErrorЕсли Вы переопределяете этот метод и не можете записать данные документа ни по какой причине, возвратитесь косвенно
NSErrorобъект, инкапсулирующий причины, почему Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
Словарь атрибутов файла — например, уровень защиты файла и даты создания. Посмотрите Ссылку класса NSFileManager для получения дополнительной информации об атрибутах файла.
Обсуждение
Атрибуты связаны с определенным типом файла и сохраняют работу. Можно переопределить этот метод для возврата словаря атрибутов файла, отличающихся, чем атрибут файла по умолчанию, который для новых файлов является
NSFileExtensionHidden.saveToURL:forSaveOperation:completionHandler:вызовы этот метод прежде, чем выполнить асинхронную запись. Это передает словарь вwriteContents:andAttributes:safelyToURL:forSaveOperation:error:когда это вызывает тот метод для записи файла документа.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Возвращает расширение файла для добавления к файлу URL записанного файла документа.
Объявление
Swift
func fileNameExtensionForType(_typeName: String, saveOperationsaveOperation: UIDocumentSaveOperation) -> StringObjective C
- (NSString *)fileNameExtensionForType:(NSString *)typeNamesaveOperation:(UIDocumentSaveOperation)saveOperationПараметры
typeNameUniform Type Identifier (UTI), указывающий тип документа (например, PDF или HTML).
saveOperationКонстанта, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
Возвращаемое значение
Строка для использования в качестве расширения файла файла документа.
Обсуждение
Реализация по умолчанию запрашивает Launch Services для получения расширения файла, соответствующего файл (документ) тип. Можно переопределить этот метод для возврата расширения файла, отличающегося от расширения по умолчанию. Реализация по умолчанию
saveToURL:forSaveOperation:completionHandler:вызовы метода этот метод, прежде чем это получит содержание документа и запишет файл документа в диск.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Открывает документ асинхронно.
Объявление
Swift
func openWithCompletionHandler(_completionHandler: ((Bool) -> Void)?)Objective C
- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
completionHandlerБлок с кодом для выполнения после операции открытия завершает. Блок не возвращает значения и имеет один параметр:
successYEStrueесли операция открытия успешно выполняется, иначеNOfalse.Блок вызывается на основную очередь.
Обсуждение
Вызовите этот метод для начала последовательности вызовов метода, открывающей и читающей документ асинхронно. Метод получает расположение файловой системы документа от
fileURLсвойство. После того, как операция открытия заканчивается, код вcompletionHandlerвыполняется.Можно переопределить этот метод, если Вы хотите пользовательское открывающее документ поведение, но если Вы делаете рекомендуется вызвать реализацию суперкласса сначала (
super). Если Вы не вызываетеsuper, необходимо использоватьNSFileCoordinatorкласс для реализации скоординированного чтения. Реализация по умолчанию устанавливает координацию файла и затем вызываетperformAsynchronousFileAccessUsingBlock:запланировать читающую документ работу для выполнения на очереди фоновых задач. Задача с очередями тогда вызываетreadFromURL:error:.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
См. также
-
Переопределите этот метод для загрузки данных документа в модель данных приложения.
Объявление
Swift
func loadFromContents(_contents: AnyObject, ofTypetypeName: String, erroroutError: NSErrorPointer) -> BoolПараметры
contentsОбъект, инкапсулирующий данные документа для загрузки. Этот объект является любой экземпляром
NSDataкласс (для плоских файлов) илиNSFileWrapperкласс (для пакетов файла).typeNameoutErrorЕсли Вы не можете загрузить данные документа ни по какой причине, возвратитесь косвенно
NSErrorобъект, инкапсулирующий причины, Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YEStrueесли Вы успешно загружаете документ,NOfalseиначе.Обсуждение
Переопределите этот метод, чтобы принять и загрузить данные для документа. После
UIDocumentсчитывает данные документа из файла, расположенного вfileURLэто вызывает Ваш подкласс, передавая данные подклассу в этом методе. Этот метод вызывают на очереди чтоopenWithCompletionHandler:к методу обратились (обычно, основная очередь).Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
См. также
-
Считывает данные документа в файле в указанном расположении в тестовой среде приложения.
Объявление
Swift
func readFromURL(_url: NSURL, erroroutError: NSErrorPointer) -> BoolПараметры
urlURL файла, идентифицирующий расположение файла документа в тестовой среде приложения. Этот файл URL обычно является тем, возвращенным
fileURLсвойство.outErrorЕсли файл документа не может быть считан, возвраты косвенно ошибочный объект, инкапсулирующий причины, почему операция чтения перестала работать.
Возвращаемое значение
YEStrueесли операция чтения успешно выполняется, иначеNOfalse.Обсуждение
Типичный
UIDocumentесли весь файл читается сразу, подклассы не должны должны быть вызывать этот метод непосредственно, особенно. Вызовы реализации по умолчаниюloadFromContents:ofType:error:на том, очереди, на которыйopenWithCompletionHandler:был вызван для обеспеченияUIDocumentподкласс с объектом данных документа.Подклассы, хотящие больше управления чтением файла документа — например, которые хотят считать большой файл документа инкрементно — могут переопределить этот метод. Не необходимо для этих подклассов вызвать реализацию суперкласса (
super).Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Планирует читающую документ или пишущую документ работу на параллельную очередь фоновых задач.
Объявление
Swift
func performAsynchronousFileAccessUsingBlock(_block: (() -> Void)!)Objective C
- (void)performAsynchronousFileAccessUsingBlock:(void (^)(void))blockПараметры
blockБлок, вызывающийся как задача выполниться на очереди фоновых задач. Блок не возвращает значения и не берет параметров.
Обсуждение
Типичное
UIDocumentподклассы — т.е. переопределяющий тотcontentsForType:error:иloadFromContents:ofType:error:— не должен вызывать этот метод.Реализации по умолчанию
saveToURL:forSaveOperation:completionHandler:иopenWithCompletionHandler:вызовите этот метод для сериализации доступа к файлу. Если Вы переопределяете эти методы и не вызываетеsuper, необходимо вызвать этот метод для сериализации доступа к файлу на очереди фоновых задач. Если Вы непосредственно вызываетеreadFromURL:error:метод, необходимо перенестись, тот вызов в блоке передал вperformAsynchronousFileAccessUsingBlock:.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Возвращается документ новым данным документа сохранил дисковый.
Объявление
Swift
func revertToContentsOfURL(_url: NSURL, completionHandlercompletionHandler: ((Bool) -> Void)?)Objective C
- (void)revertToContentsOfURL:(NSURL *)urlcompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
urlФайл URL, определяющий местоположение новой версии файла документа в песочнице приложения.
completionHandlerБлок с кодом для выполнения после работы реверсии завершает. Блок не возвращает значения и имеет один параметр:
successYEStrueесли работа реверсии успешно выполняется, иначеNOfalse.Блок вызывается на основную очередь.
Обсуждение
Вы вызываете этот метод, чтобы отбросить все несохраненные модификации документа и заменить содержание документа путем чтения файла или пакета файла, расположенного
url. Реализация по умолчанию заключает в скобки работу реверсии междуdisableEditingиenableEditingпотому что документ не должен принимать пользовательские изменения в течение этого периода. Подклассы, переопределяющие этот метод, должны вызвать реализацию суперкласса (super) или используйтеNSFileCoordinatorкласс для инициирования скоординированного чтения.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Переопределенный для отключения редактирования, когда небезопасно внести изменения в документ.
Объявление
Swift
func disableEditing()Objective C
- (void)disableEditingОбсуждение
Подклассы должны переопределить этот метод, чтобы препятствовать тому, чтобы пользователь редактировал документ, когда это небезопасно для этого такой как во время сохранять-и-закрывать, или вернитесь работа. Когда редактирование безопасно снова, вызовы класса UIKit
enableEditing. Реализация по умолчанию этого метода ничего не делает.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Переопределенный, чтобы позволить редактировать, когда безопасно снова внести изменения в документ.
Объявление
Swift
func enableEditing()Objective C
- (void)enableEditingОбсуждение
Подклассы должны переопределить этот метод, чтобы позволить пользователю редактировать документ, когда безопасно сделать так. Это переопределение метода должно быть соединено с переопределением
disableEditing. Реализация по умолчанию этого метода ничего не делает.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Возвраты, имеет ли документ какие-либо несохраненные изменения.
Объявление
Swift
func hasUnsavedChanges() -> BoolObjective C
- (BOOL)hasUnsavedChangesВозвращаемое значение
YEStrueесли документ не сохранил изменения, иначеNOfalse.Обсуждение
Реализация по умолчанию
autosaveWithCompletionHandler:если этот метод возвращается, инициирует сохранениеYEStrue. Типичные подклассы не должны переопределятьhasUnsavedChangesметод. Для реализации отслеживания изменений они должны вместо этого использоватьNSUndoManagerобъект (присвоенныйundoManager) зарегистрировать изменения или вызовupdateChangeCount:каждый раз пользователь вносит изменение; UIKit тогда автоматически определяет, не сохраняются ли там изменения.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Обновите счетчик изменения путем указания вида изменения.
Объявление
Swift
func updateChangeCount(_change: UIDocumentChangeKind)Objective C
- (void)updateChangeCount:(UIDocumentChangeKind)changeПараметры
changeКонстанта, указывающая, было ли изменение внесено, очищено, отменено или восстановлено. См., что Документ Сохраняет Вид для получения дополнительной информации.
Обсуждение
Вызов этого метода может влиять на значение, возвращенное
hasUnsavedChanges. Если Вы получаете доступ, Вы не должны должны быть вызывать метод этоNSUndoManagerобъект отundoManagerсвойство (или присваивают пользовательский ему), и изменения регистра с менеджером по отмене.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
undoManagerСвойствоМенеджер по отмене по документу.
Объявление
Swift
var undoManager: NSUndoManagerObjective C
@property(retain) NSUndoManager *undoManagerОбсуждение
Это свойство содержит менеджера по отмене документа (
NSUndoManagerобъект) илиnilесли к этому свойству не получили доступ или установили. Если пользовательский менеджер по отмене не был установлен, доступ к этому свойству создает менеджера по отмене по умолчанию.Менеджер по отмене по документу регистрируется как наблюдатель различных
NSUndoManagerуведомления так, чтобы это могло вызватьupdateChangeCount:поскольку пользователь вносит невыполнимые изменения в документ. Когда подкласс устанавливает это свойство и реализует изменения регистров с ним, оно не должно вызыватьupdateChangeCount:непосредственно или (более редко) переопределяйтеhasUnsavedChanges.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Переопределенный для возврата маркера изменения для определенной работы сохранения.
Объявление
Swift
func changeCountTokenForSaveOperation(_saveOperation: UIDocumentSaveOperation) -> AnyObjectObjective C
- (id)changeCountTokenForSaveOperation:(UIDocumentSaveOperation)saveOperationПараметры
saveOperationКонстанта, указывающая, пишет ли работа сохранения новый файл или перезаписывает существующий. См., что Документ Сохраняет Работу для описаний этих констант.
Возвращаемое значение
Объект использовать в качестве маркера количества изменения.
Обсуждение
Для получения сохраняющихся автоматически возможностей документов необходимо реализовать отслеживание изменений. Обычно Вы делаете это при помощи
NSUndoManagerобъект (присвоенныйundoManagerсвойство) для регистрации изменений или путем вызоваupdateChangeCount:метод каждый раз пользователь вносит изменение; UIKit тогда автоматически определяет, не сохраняются ли там изменения, и возвращает собственное значение изhasUnsavedChanges. Если Вы не проявляете ни один из этих подходов (и Вы хотите сохраняющуюся автоматически функцию), необходимо реализовать этот метод, а такжеupdateChangeCountWithToken:forSaveOperation:иhasUnsavedChanges.Вы реализуете этот определенный метод для возврата маркера количества изменения, который использование UIKit для инкапсуляции истории документа изменяет для определенной работы сохранения. Маркер может быть любым объектом, представляющим текущее состояние изменения документа. Этот метод вызывают в начале реализации по умолчанию
saveToURL:forSaveOperation:completionHandler:метод. В конце этой реализации по умолчанию это вызываетupdateChangeCountWithToken:forSaveOperation:метод, передающий в маркере количества изменения. Вы реализуете последний метод для сравнения, маркер с тем возвратился ранее; путем выполнения так, можно определить, получил ли документ новые несохраненные изменения между запуском и концом асинхронной операции записи. Можно тогда возвратить собственное значение из переопределенияhasUnsavedChanges.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Переопределенный для обновления количества изменения в отношении маркера количества изменения передал в UIKit.
Объявление
Swift
func updateChangeCountWithToken(_changeCountToken: AnyObject, forSaveOperationsaveOperation: UIDocumentSaveOperation)Objective C
- (void)updateChangeCountWithToken:(id)changeCountTokenforSaveOperation:(UIDocumentSaveOperation)saveOperationПараметры
changeCountTokenОбъект использовать в качестве маркера количества изменения.
UIDocumentполученный этот маркер ранее путем вызоваchangeCountTokenForSaveOperation:.saveOperationКонстанта, указывающая, пишет ли работа сохранения новый файл или перезаписывает существующий. См., что Документ Сохраняет Работу для описаний этих констант.
Обсуждение
Для получения сохраняющихся автоматически возможностей документов необходимо реализовать отслеживание изменений. Обычно Вы делаете это при помощи
NSUndoManagerобъект (присвоенныйundoManagerсвойство) для регистрации изменений или путем вызоваupdateChangeCount:метод каждый раз пользователь вносит изменение; UIKit тогда автоматически определяет, не сохраняются ли там изменения, и возвращает собственное значение изhasUnsavedChanges. Если Вы не проявляете ни один из этих подходов (и Вы хотите сохраняющуюся автоматически функцию), необходимо реализовать этот метод, а такжеchangeCountTokenForSaveOperation:иhasUnsavedChanges.Вы реализуете
changeCountTokenForSaveOperation:метод для возврата маркера количества изменения, который использование UIKit для инкапсуляции истории документа изменяет для определенной работы сохранения. Маркер может быть любым объектом, представляющим текущее состояние изменения документа. Этот метод вызывают в начале реализации по умолчаниюsaveToURL:forSaveOperation:completionHandler:метод. В конце этой реализации по умолчанию,UIDocumentвызовы этот метод (updateChangeCountWithToken:forSaveOperation:), передавая в маркере количества изменения. Вы реализуете этот метод для сравнения, маркер с тем возвратился ранее; путем выполнения так, можно определить, получил ли документ новые несохраненные изменения между запуском и концом асинхронной операции записи. Можно тогда возвратить собственное значение из переопределенияhasUnsavedChanges.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Вызванный UIKit для инициирования автоматического сохранения документов с несохраненными изменениями.
Объявление
Swift
func autosaveWithCompletionHandler(_completionHandler: ((Bool) -> Void)?)Objective C
- (void)autosaveWithCompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
completionHandlerБлок с кодом для выполнения после автоматического сохранения завершает. Блок не возвращает значения и имеет один параметр:
successYEStrueесли сохраняющаяся автоматически работа успешно выполняется, иначеNOfalse.Блок вызывается на очередь вызова.
Обсуждение
UIDocumentесли там не сохраняются изменения, периодически вызывает этот метод для инициирования работы сохранения. Вы не должны вызывать этот метод непосредственно. Подклассы могут переопределить его, если они хотят сделать специальные вещи с автоматическим сохранением. Реализация по умолчанию этого метода вызываетhasUnsavedChangesметод и, если это возвращаетсяYEStrue, это вызываетsaveToURL:forSaveOperation:completionHandler:метод.Этот метод должен только быть вызван для основанного на периоде, сохраняет. Можно вызвать его с
successпараметр набора параметра обработчика завершения кNOfalseи возвратитесь; это делает, это безопасный к не фактически сохраняет когдаautosaveWithCompletionHandler:вызывается. Однако, если Вы вызываетеsaveToURL:forSaveOperation:completionHandler:, сохранение данных документа должно произойти.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
userActivityСвойствоОбъект, инкапсулирующий пользовательское действие, поддерживается этим документом.
Объявление
Swift
var userActivity: NSUserActivity?Objective C
@property(nonatomic, retain) NSUserActivity *userActivityОбсуждение
NSDocumentавтоматически создаетNSUserActivityобъекты для основанных на iCloud документов, если приложениеInfo.plistфайл списка свойств включает aCFBundleDocumentTypesключNSUbiquitousDocumentUserActivityType. ЗначениеNSUbiquitousDocumentUserActivityTypeстрока, использующаяся дляNSUserActivityтип действия объекта. URL документа помещается вNSUserActivityобъектuserInfoсловарь сNSUserActivityDocumentURLKey.На iOS, для
NSUserActivityобъекты, которыми управляет UIKit для становления текущими, необходимо или вызватьbecomeCurrentявно или имейте документNSUserActivityвозразите также установленный на aUIViewControllerобъект, который находится в иерархии представления, когда приложение прибывает в передний план.Если документ становится неповсеместным,
userActivityсвойствоnil. ЛюбойNSUserActivityобъекты, которыми управляет AppKit, но не имеющие никаких ассоциированных документов (или респонденты) автоматически лишены законной силы.Это свойство может использоваться от любого потока. Это KVO заметный в случае, если
userActivityобъект совместно используется с другими объектами, которые должны быть сохранены в синхронизации, когда документ перемещается в и из iCloud.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 8.0 и позже.
-
Восстановления состояние должны были продолжать данное пользовательское действие.
Объявление
Swift
func restoreUserActivityState(_activity: NSUserActivity)Objective C
- (void)restoreUserActivityState:(NSUserActivity *)activityПараметры
activityПользовательское действие, которое будет продолжаться.
Обсуждение
Подклассы переопределяют этот метод для восстановления состояния респондента с данным пользовательским действием. Переопределение должно использовать данные состояния, содержавшиеся в
userInfoсловарь данного пользовательского действия для восстановления объекта.Пользовательские действия, которыми управляют
NSDocumentможет быть восстановлен автоматически, еслиNOfalseвозвращается изapplication:continueActivity:restorationHandler:или если это не реализовано. В этой ситуации документ открытNSDocumentControllerметодopenDocumentWithContentsOfURL:display:completionHandler:и получает arestoreUserActivityState:сообщение.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 8.0 и позже.
См. также
-
Обновляет состояние данного пользовательского действия.
Объявление
Swift
func updateUserActivityState(_activity: NSUserActivity)Objective C
- (void)updateUserActivityState:(NSUserActivity *)activityПараметры
activityПользовательское действие, которое будет обновлено.
Обсуждение
Реализация по умолчанию этого метода помещает документ
fileURLвNSUserActivityобъектuserInfoсловарь сNSUserActivityDocumentURLKey.UIDocumentавтоматически наборыneedsSaveсвойствоNSUserActivityобъект кYEStrueкогдаfileURLизменения.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 8.0 и позже.
См. также
-
Вызванный или переопределенный для обработки ошибки, происходящей во время попытки читать сохраните или вернитесь документ.
Объявление
Swift
func handleError(_error: NSError, userInteractionPermitteduserInteractionPermitted: Bool)Objective C
- (void)handleError:(NSError *)erroruserInteractionPermitted:(BOOL)userInteractionPermittedПараметры
errorИнформация об инкапсуляции объекта об ошибке, с которой встречаются в попытке открыться, сохраните или вернитесь документ. Ошибочный домен
NSCocoaErrorDomain. Код ошибки является одним изenumконстанты, объявленные вFoundationErrors.h.userInteractionPermittedЕсли
NOfalse, никакая попытка не (или должен быть), сделанный представить модальное представление пользователю. Это значение может бытьNOfalseв случаях такой как тогда, когда работа сохранения перестала работать, в то время как приостанавливается приложение. Если этот параметрYEStrue, UIKit или Ваше переопределение могут представить информацию об ошибке пользователю в модальном представлении и (дополнительно) позволить пользователю разрешать ошибку.Обсуждение
Типичный
UIDocumentподклассы не должны вызывать или переопределять этот метод. Вместо этого они могут наблюдатьUIDocumentStateChangedNotificationуведомление, которое будет уведомлено относительно изменений в состоянии документа. В их обработчике уведомления они могут проверить значениеdocumentStateсвойство и продолжается соответственно. Посмотрите Разрешение конфликтов и Обработку ошибок для обсуждения этого.Если Вы используете управляемые документы (экземпляры
UIManagedDocumentподкласс), необходимо разделить этот метод на подклассы и при желанииfinishedHandlingError:recovered:метод. Разделение на подклассы позволяет Вашему приложению наблюдать ошибки в сохранении или проверке.UIDocumentStateChangedNotificationуведомление не содержит auserInfoсловарь и так не передает определенную информацию об ошибке.Если Вы непосредственно вызываете какое-либо усовершенствованное чтение и методы записи, имеющие ошибочный параметр объекта (например,
writeContents:andAttributes:safelyToURL:forSaveOperation:error:) и тот вызов возвращаетсяNSErrorвозразите косвенно, необходимо вызвать этот метод (handleError:userInteractionPermitted:), передавая в ошибочном объекте.Этот метод вызывают реализации по умолчанию
openWithCompletionHandler:иsaveToURL:forSaveOperation:completionHandler:когдаUIDocumentвстречается с чтением или записью ошибки, соответственно.Если Вы переопределяете этот метод и не вызываете реализацию суперкласса (
super), Вы ответственны за следующее:Вызов
finishedHandlingError:recovered:когда приложение не требует никаких дополнительных отзывов пользователей об ошибке, когда Вы закончены, обработав ошибку — например.Реализация
userInteractionNoLongerPermittedForError:завершить обработку ошибок сразу. ЕслиuserInteractionPermittedNOfalse, необходимо сразу обработать ошибку и вызовfinishedHandlingError:recovered:в контекстеhandleError:userInteractionPermitted:
Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Говорит UIKit, что Вы закончили, обработал ошибку.
Объявление
Swift
func finishedHandlingError(_error: NSError, recoveredrecovered: Bool)Objective C
- (void)finishedHandlingError:(NSError *)errorrecovered:(BOOL)recoveredПараметры
errorОшибочный объект инкапсуляция информации об ошибке.
recoveredYEStrueесли Вы восстановились с ошибки, иначеNOfalse.Обсуждение
Когда обработка ошибки (включая любое взаимодействие с пользователем) завершена, этот метод вызывают по умолчанию. Подклассы должны вызвать этот метод, только если они переопределяют
handleError:userInteractionPermitted:и не вызывайте реализацию суперкласса (super). При переопределении этого метода необходимо вызватьsuper.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Отправленный, когда больше не безопасно продолжиться, сразу не обрабатывая ошибку.
Объявление
Swift
func userInteractionNoLongerPermittedForError(_error: NSError)Objective C
- (void)userInteractionNoLongerPermittedForError:(NSError *)errorПараметры
errorОшибочный объект инкапсуляция информации об ошибке.
Обсуждение
UIKit вызывает этот метод, когда больше не безопасно продолжиться, сразу не обрабатывая ошибку, такой как тогда, когда приостанавливается приложение. Подклассы, переопределяющие этот метод, должны сразу закончить обработку ошибок (включая отклонение любого интерактивного пользовательского интерфейса) и вызов
finishedHandlingError:recovered:перед возвратом. Если Вы переопределяете, только необходимо переопределить этот методhandleError:userInteractionPermitted:не вызывая реализацию суперкласса (super).Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
Константы для указания вида изменения в документе.
Объявление
Swift
enum UIDocumentChangeKind : Int { case Done case Undone case Redone case Cleared }Objective C
enum { UIDocumentChangeDone, UIDocumentChangeUndone, UIDocumentChangeRedone, UIDocumentChangeCleared }; typedef NSInteger UIDocumentChangeKind;Константы
-
DoneUIDocumentChangeDoneИзменение было внесено в документ.
Доступный в iOS 5.0 и позже.
-
UndoneUIDocumentChangeUndoneИзменение в документе было отменено.
Доступный в iOS 5.0 и позже.
-
RedoneUIDocumentChangeRedoneОтмененное изменение в документе было восстановлено.
Доступный в iOS 5.0 и позже.
-
ClearedUIDocumentChangeClearedДокумент очищен от выдающихся изменений.
Доступный в iOS 5.0 и позже.
Обсуждение
Вы указываете одну из этих констант как параметр
updateChangeCount:метод.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
-
Константы для указания типа работы сохранения.
Объявление
Swift
enum UIDocumentSaveOperation : Int { case ForCreating case ForOverwriting }Objective C
enum { UIDocumentSaveForCreating, UIDocumentSaveForOverwriting }; typedef NSInteger UIDocumentSaveOperation;Константы
-
ForCreatingUIDocumentSaveForCreatingВпервые сохраняется документ.
Доступный в iOS 5.0 и позже.
-
ForOverwritingUIDocumentSaveForOverwritingДокумент сохраняется путем перезаписи текущей версии.
Доступный в iOS 5.0 и позже.
Обсуждение
Вы указываете одну из этих констант в качестве параметра в следующих методах:
saveToURL:forSaveOperation:completionHandler:,writeContents:andAttributes:safelyToURL:forSaveOperation:error:,writeContents:toURL:forSaveOperation:originalContentsURL:error:,fileAttributesToWriteToURL:forSaveOperation:error:,fileNameExtensionForType:saveOperation:changeCountTokenForSaveOperation:, иupdateChangeCountWithToken:forSaveOperation:.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
-
Состояние документа.
Объявление
Swift
struct UIDocumentState : RawOptionSetType { init(_rawValue: UInt) init(rawValuerawValue: UInt) static var Normal: UIDocumentState { get } static var Closed: UIDocumentState { get } static var InConflict: UIDocumentState { get } static var SavingError: UIDocumentState { get } static var EditingDisabled: UIDocumentState { get } }Objective C
enum { UIDocumentStateNormal = 0, UIDocumentStateClosed = 1 << 0, UIDocumentStateInConflict = 1 << 1, UIDocumentStateSavingError = 1 << 2, UIDocumentStateEditingDisabled = 1 << 3 }; typedef NSInteger UIDocumentState;Константы
-
NormalUIDocumentStateNormalДокумент открыт, редактирование включено, и нет никаких конфликтов или ошибок, связанных с ним.
Доступный в iOS 5.0 и позже.
-
ClosedUIDocumentStateClosedБыла ошибка в чтении документа: документ не был или успешно открыт или был с тех пор закрыт. Свойства документа не могли бы быть допустимыми.
Доступный в iOS 5.0 и позже.
-
InConflictUIDocumentStateInConflictКонфликты существуют для файла документа, расположенного в
fileURL. Можно получить доступ к этим конфликтным версиям документа путем вызова otherVersionsOfItemAtURL: метод классаNSFileVersionкласс. Этот метод возвращает массивNSFileVersionобъекты. Можно тогда разрешить конфликтные версии — например, программно попытаться объединить версии или представить версии документа пользователю и запросить его или ее выбрать ту.Доступный в iOS 5.0 и позже.
-
SavingErrorUIDocumentStateSavingErrorБыла ошибка в сохранении или возвращении документ.
Доступный в iOS 5.0 и позже.
-
EditingDisabledUIDocumentStateEditingDisabledДокумент занят, и это не в настоящее время безопасно для пользовательских редактирований. Это состояние установлено как раз перед
UIDocumentвызовыdisableEditingметод. Это вызываетenableEditingкогда становится безопасно отредактировать снова.UIDocumentкогда ошибка предотвращает возвращение документа, также устанавливают это состояние.Доступный в iOS 5.0 и позже.
Обсуждение
A
UIDocumentобъектно-ориентированные памяти текущее состояние документа вdocumentStateсвойство. Для получения уведомлений об изменениях в состоянии документа наблюдайтеUIDocumentStateChangedNotificationуведомление.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
-
-
Ключ, идентифицирующий документ, связался с пользовательским действием.
Объявление
Swift
let NSUserActivityDocumentURLKey: StringObjective C
NSString* const NSUserActivityDocumentURLKey;Константы
-
NSUserActivityDocumentURLKeyКлюч
userInfoсловарьNSUserActivityобъект. Его значением является URL документа, связанного с пользовательским действием.Доступный в iOS 8.0 и позже.
-
-
Отправленный объектом документа, когда существует изменение в состоянии документа.
При обработке этого уведомления проверьте значение
documentStateсвойство для наблюдения то, что новое состояние, и затем продолжает соответственно. Существует нетuserInfoсловарь.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 5.0 и позже.
