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:
на основном потоке. То, когда чтение или сохраняет работу, начатую этими методами, завершает, блок обработчика завершения выполняется на той же очереди отгрузки, на которой метод был вызван, позволив Вам выполнить любые задачи, зависящие от чтения или сохранить работу. Если работа не успешна, NO
false
передается в блок завершения-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
возвраты метода YES
true
; если это делает, это инициирует работу сохранения для документа.
Существует два основных способа реализовать отслеживание изменений в Вашем 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 может вызвать эти методы доступа для фонового потока. Таким образом Ваша переопределяющая реализация должна быть ориентирована на многопотоковое исполнение.
-
Возвращает объект документа, инициализированный с его расположением файловой системы.
Параметры
url
URL файла, идентифицирующий расположение в тестовой среде приложения, где должны быть записаны данные документа. Передача в
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 завершает. Блок не возвращает значения и имеет один параметр:
success
YES
true
если кто-либо сохраняет работу, успешно выполняется, иначеNO
false
.Блок вызывается на основную очередь.
Обсуждение
Вы вызываете этот метод для начала последовательности вызовов метода, сохраняющей документ безопасно и асинхронно. Расположение файловой системы документа происходит из
fileURL
свойство. После того, как работа сохранения завершает, код вcompletionHandler
выполняется. В этом коде можно закрыть документ — например, путем удаления представления документа из экрана. Кроме того, если работа сохранения не успешно выполнялась (success
NO
false
), можно ответить надлежащим способом.Вы обычно не переопределяли бы этот метод. Реализация по умолчанию вызывает
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 *)
url
forSaveOperation:(UIDocumentSaveOperation)saveOperation
completionHandler:(void (^)(BOOL success))completionHandler
Параметры
url
Файл URL, идентифицирующий расположение в тестовой среде приложения для записи данные документа в. Как правило, это - URL, полученный из
fileURL
свойство.saveOperation
Константа, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
completionHandler
Блок с кодом, выполняющимся, когда завершает работа сохранения. Блок не возвращает значения и имеет один параметр:
success
YES
true
если работа сохранения успешно выполняется, иначеNO
false
.Этот блок вызывается на очередь вызова.
Обсуждение
Реализация по умолчанию этого метода сначала вызывает
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)
contents
andAttributes:(NSDictionary *)additionalFileAttributes
safelyToURL:(NSURL *)url
forSaveOperation:(UIDocumentSaveOperation)saveOperation
error:(NSError **)outError
Параметры
contents
Данные документа для записи в диск. Как правило, данные инкапсулируются
NSData
объект (если плоский файл) илиNSFileWrapper
объект (если пакет файла).Если объект, инкапсулирующий данные документа, имеет некоторый другой тип, необходимо переопределить этот метод или
writeContents:toURL:forSaveOperation:originalContentsURL:error:
выполнять фактическую запись данных.additionalFileAttributes
Словарь
NSFileManager
атрибуты файла для присвоения к файлу документа. Реализация по умолчанию получает эти атрибуты файла путем вызоваfileAttributesToWriteToURL:forSaveOperation:error:
.url
Файл URL, указывающий расположение файла документа в тестовой среде приложения.
saveOperation
Константа, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
outError
Если Вы переопределяете этот метод и не можете записать данные документа ни по какой причине, возвратитесь косвенно
NSError
объект, инкапсулирующий причины, почему Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YES
true
если операция записи успешно выполняется, иначеNO
false
.Обсуждение
Этот метод вызывают
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)
contents
toURL:(NSURL *)url
forSaveOperation:(UIDocumentSaveOperation)saveOperation
originalContentsURL:(NSURL *)originalContentsURL
error:(NSError **)outError
Параметры
contents
Данные документа для записи в диск. Как правило, данные инкапсулируются
NSData
объект (если плоский файл) илиNSFileWrapper
объект (если пакет файла).Если объект, инкапсулирующий данные документа, имеет некоторый другой тип, необходимо переопределить этот метод или
writeContents:andAttributes:safelyToURL:forSaveOperation:error:
выполнять фактическую запись данных.url
Файл URL, указывающий расположение файла документа в тестовой среде приложения.
saveOperation
Константа, указывающая, пишется ли файл документа в первый раз или перезаписывается ли это. См., что Документ Сохраняет Работу для подробных данных.
originalContentsURL
Файл URL, указывающий предыдущее расположение файла документа (если нет
nil
).outError
Если Вы переопределяете этот метод и не можете записать данные документа ни по какой причине, возвратитесь косвенно
NSError
объект, инкапсулирующий причины, почему Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YES
true
если операция записи успешно выполняется, иначеNO
false
.Обсуждение
Этот метод вызывают
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 *)
url
forSaveOperation:(UIDocumentSaveOperation)saveOperation
error:(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 *)
typeName
saveOperation:(UIDocumentSaveOperation)saveOperation
Параметры
typeName
Uniform 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
Блок с кодом для выполнения после операции открытия завершает. Блок не возвращает значения и имеет один параметр:
success
YES
true
если операция открытия успешно выполняется, иначеNO
false
.Блок вызывается на основную очередь.
Обсуждение
Вызовите этот метод для начала последовательности вызовов метода, открывающей и читающей документ асинхронно. Метод получает расположение файловой системы документа от
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
класс (для пакетов файла).typeName
outError
Если Вы не можете загрузить данные документа ни по какой причине, возвратитесь косвенно
NSError
объект, инкапсулирующий причины, Вы не можете. Иначе, проигнорируйте этот параметр.Возвращаемое значение
YES
true
если Вы успешно загружаете документ,NO
false
иначе.Обсуждение
Переопределите этот метод, чтобы принять и загрузить данные для документа. После
UIDocument
считывает данные документа из файла, расположенного вfileURL
это вызывает Ваш подкласс, передавая данные подклассу в этом методе. Этот метод вызывают на очереди чтоopenWithCompletionHandler:
к методу обратились (обычно, основная очередь).Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 5.0 и позже.
См. также
-
Считывает данные документа в файле в указанном расположении в тестовой среде приложения.
Объявление
Swift
func readFromURL(_
url
: NSURL, erroroutError
: NSErrorPointer) -> BoolПараметры
url
URL файла, идентифицирующий расположение файла документа в тестовой среде приложения. Этот файл URL обычно является тем, возвращенным
fileURL
свойство.outError
Если файл документа не может быть считан, возвраты косвенно ошибочный объект, инкапсулирующий причины, почему операция чтения перестала работать.
Возвращаемое значение
YES
true
если операция чтения успешно выполняется, иначеNO
false
.Обсуждение
Типичный
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 *)
url
completionHandler:(void (^)(BOOL success))completionHandler
Параметры
url
Файл URL, определяющий местоположение новой версии файла документа в песочнице приложения.
completionHandler
Блок с кодом для выполнения после работы реверсии завершает. Блок не возвращает значения и имеет один параметр:
success
YES
true
если работа реверсии успешно выполняется, иначеNO
false
.Блок вызывается на основную очередь.
Обсуждение
Вы вызываете этот метод, чтобы отбросить все несохраненные модификации документа и заменить содержание документа путем чтения файла или пакета файла, расположенного
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() -> Bool
Objective C
- (BOOL)hasUnsavedChanges
Возвращаемое значение
YES
true
если документ не сохранил изменения, иначеNO
false
.Обсуждение
Реализация по умолчанию
autosaveWithCompletionHandler:
если этот метод возвращается, инициирует сохранениеYES
true
. Типичные подклассы не должны переопределять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: NSUndoManager
Objective 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)
changeCountToken
forSaveOperation:(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
Блок с кодом для выполнения после автоматического сохранения завершает. Блок не возвращает значения и имеет один параметр:
success
YES
true
если сохраняющаяся автоматически работа успешно выполняется, иначеNO
false
.Блок вызывается на очередь вызова.
Обсуждение
UIDocument
если там не сохраняются изменения, периодически вызывает этот метод для инициирования работы сохранения. Вы не должны вызывать этот метод непосредственно. Подклассы могут переопределить его, если они хотят сделать специальные вещи с автоматическим сохранением. Реализация по умолчанию этого метода вызываетhasUnsavedChanges
метод и, если это возвращаетсяYES
true
, это вызываетsaveToURL:forSaveOperation:completionHandler:
метод.Этот метод должен только быть вызван для основанного на периоде, сохраняет. Можно вызвать его с
success
параметр набора параметра обработчика завершения кNO
false
и возвратитесь; это делает, это безопасный к не фактически сохраняет когда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
может быть восстановлен автоматически, еслиNO
false
возвращается из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
объект кYES
true
когдаfileURL
изменения.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Вызванный или переопределенный для обработки ошибки, происходящей во время попытки читать сохраните или вернитесь документ.
Объявление
Swift
func handleError(_
error
: NSError, userInteractionPermitteduserInteractionPermitted
: Bool)Objective C
- (void)handleError:(NSError *)
error
userInteractionPermitted:(BOOL)userInteractionPermitted
Параметры
error
Информация об инкапсуляции объекта об ошибке, с которой встречаются в попытке открыться, сохраните или вернитесь документ. Ошибочный домен
NSCocoaErrorDomain
. Код ошибки является одним изenum
константы, объявленные вFoundationErrors.h
.userInteractionPermitted
Если
NO
false
, никакая попытка не (или должен быть), сделанный представить модальное представление пользователю. Это значение может бытьNO
false
в случаях такой как тогда, когда работа сохранения перестала работать, в то время как приостанавливается приложение. Если этот параметрYES
true
, 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:
завершить обработку ошибок сразу. ЕслиuserInteractionPermitted
NO
false
, необходимо сразу обработать ошибку и вызов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 *)
error
recovered:(BOOL)recovered
Параметры
error
Ошибочный объект инкапсуляция информации об ошибке.
recovered
YES
true
если Вы восстановились с ошибки, иначеNO
false
.Обсуждение
Когда обработка ошибки (включая любое взаимодействие с пользователем) завершена, этот метод вызывают по умолчанию. Подклассы должны вызвать этот метод, только если они переопределяют
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;
Константы
-
Done
UIDocumentChangeDone
Изменение было внесено в документ.
Доступный в iOS 5.0 и позже.
-
Undone
UIDocumentChangeUndone
Изменение в документе было отменено.
Доступный в iOS 5.0 и позже.
-
Redone
UIDocumentChangeRedone
Отмененное изменение в документе было восстановлено.
Доступный в iOS 5.0 и позже.
-
Cleared
UIDocumentChangeCleared
Документ очищен от выдающихся изменений.
Доступный в 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;
Константы
-
ForCreating
UIDocumentSaveForCreating
Впервые сохраняется документ.
Доступный в iOS 5.0 и позже.
-
ForOverwriting
UIDocumentSaveForOverwriting
Документ сохраняется путем перезаписи текущей версии.
Доступный в 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;
Константы
-
Normal
UIDocumentStateNormal
Документ открыт, редактирование включено, и нет никаких конфликтов или ошибок, связанных с ним.
Доступный в iOS 5.0 и позже.
-
Closed
UIDocumentStateClosed
Была ошибка в чтении документа: документ не был или успешно открыт или был с тех пор закрыт. Свойства документа не могли бы быть допустимыми.
Доступный в iOS 5.0 и позже.
-
InConflict
UIDocumentStateInConflict
Конфликты существуют для файла документа, расположенного в
fileURL
. Можно получить доступ к этим конфликтным версиям документа путем вызова otherVersionsOfItemAtURL: метод классаNSFileVersion
класс. Этот метод возвращает массивNSFileVersion
объекты. Можно тогда разрешить конфликтные версии — например, программно попытаться объединить версии или представить версии документа пользователю и запросить его или ее выбрать ту.Доступный в iOS 5.0 и позже.
-
SavingError
UIDocumentStateSavingError
Была ошибка в сохранении или возвращении документ.
Доступный в iOS 5.0 и позже.
-
EditingDisabled
UIDocumentStateEditingDisabled
Документ занят, и это не в настоящее время безопасно для пользовательских редактирований. Это состояние установлено как раз перед
UIDocument
вызовыdisableEditing
метод. Это вызываетenableEditing
когда становится безопасно отредактировать снова.UIDocument
когда ошибка предотвращает возвращение документа, также устанавливают это состояние.Доступный в iOS 5.0 и позже.
Обсуждение
A
UIDocument
объектно-ориентированные памяти текущее состояние документа вdocumentState
свойство. Для получения уведомлений об изменениях в состоянии документа наблюдайтеUIDocumentStateChangedNotification
уведомление.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 5.0 и позже.
-
-
Ключ, идентифицирующий документ, связался с пользовательским действием.
Объявление
Swift
let NSUserActivityDocumentURLKey: String
Objective C
NSString* const NSUserActivityDocumentURLKey;
Константы
-
NSUserActivityDocumentURLKey
Ключ
userInfo
словарьNSUserActivity
объект. Его значением является URL документа, связанного с пользовательским действием.Доступный в iOS 8.0 и позже.
-
-
Отправленный объектом документа, когда существует изменение в состоянии документа.
При обработке этого уведомления проверьте значение
documentState
свойство для наблюдения то, что новое состояние, и затем продолжает соответственно. Существует нетuserInfo
словарь.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 5.0 и позже.