Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы основы ссылка класса NSFileCoordinator

Опции
Развертывание Target:

На этой странице
Язык:

NSFileCoordinator

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

Объекты, принимающие NSFilePresenter протокол должен зарегистрировать себя в NSFileCoordinator класс, который будет уведомлен относительно любых незаконченных изменений. Они делают это путем вызова addFilePresenter: метод класса. Предъявитель файла должен сбалансировать вызовы к addFilePresenter: с вызовом к removeFilePresenter: прежде чем быть выпущенным, даже в собравшем «мусор» приложении. Класс предъявителя файла ведет список активных объектов предъявителя файла в текущем приложении и использовании, перечисляющем, плюс координатор файла классы в других процессах, для поставки уведомлений всем объектам, заинтересованным определенным элементом.

Экземпляры NSFileCoordinator предназначаются, чтобы использоваться на основе «на работу файла», где работа файла - что-то как открытие и чтение содержания файла или перемещения пакета файлов и каталогов к новому расположению. Нет никакого преимущества к хранению координатора файла объект мимо длины запланированной работы. Фактически, потому что координаторы файла сохраняют объекты предъявителя файла, имея в наличии можно было препятствовать объектам предъявителя файла быть выпущенным своевременно.

Для получения информации о реализации объекта предъявителя файла получить связанные с файлом уведомления, посмотрите Ссылку на протокол NSFilePresenter.

Предъявители файла и iOS

Если Ваше приложение вводит фон с активным предъявителем файла, какие-либо другие процессы, выполняющие скоординированное чтение, или запись на представленном файле может зайти в тупик. Для предотвращения этой ситуации вызвать removeFilePresenter: удалить предъявителя файла в applicationDidEnterBackground: метод или в ответ на a UIApplicationDidEnterBackgroundNotification уведомление. Вызвать addFilePresenter: добавить предъявителя файла снова в applicationWillEnterForeground: метод или в ответ на a UIApplicationWillEnterForegroundNotification уведомление.

Координаторы файла и iOS

Если Ваше приложение переходит к фону, в то время как посреди скоординированного чтения или записи, Ваше приложение может сохранить блокировку на файле и любые другие процессы, пытающиеся выполнить скоординированное чтение, или запись на том файле может зайти в тупик. Для предотвращения этой ситуации необходимо запросить дополнительное фоновое время завершить работу путем вызова любого beginBackgroundTaskWithName:expirationHandler: или beginBackgroundTaskWithExpirationHandler: метод. Если запрос возвращается успешно, можно безопасно начать скоординированную операцию чтения или операцию записи. Если запрос перестал работать, необходимо отменить операцию чтения или операцию записи.

Как только Вы закончили скоординированное чтение или запись, необходимо вызвать endBackgroundTask: отметить конец Вашей фоновой задачи.

Поточная обработка соображений

Каждый координатор файла возражает, что Вы создаете, должен использоваться на единственном потоке только. Если необходимо скоординировать операции файла через многократные объекты в различных потоках, каждый объект должен создать своего собственного координатора файла.

Наследование


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


Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в OS X v10.7 и позже.
  • init (filePresenter:) - initWithFilePresenter: Определяемый инициализатор

    Инициализирует и возвращает координатора файла объектное использование указанного предъявителя файла.

    Объявление

    Swift

    init(filePresenter filePresenterOrNil: NSFilePresenter?)

    Objective C

    - (instancetype)initWithFilePresenter:(id<NSFilePresenter>)filePresenterOrNil

    Параметры

    filePresenterOrNil

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

    Возвращаемое значение

    Координатор файла возражает для использования для координирования связанных с файлом операций.

    Обсуждение

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

    В частности соединение NSFileCoordinator с NSFilePresenter выполняет следующее:

    • Препятствует тому, чтобы координатор файла отправил сообщения предъявителю файла. Это означает, что предъявитель файла не получит уведомления о его собственных операциях файла. Существует одно исключение: сообщения о версиях представленного добавляемого элемента, удалите, или разрешенный во время скоординированной записи отправляются каждому соответствующему предъявителю файла.

    • Предотвращает мертвые блокировки, которые могли произойти, когда предъявитель файла выполняет скоординированную операцию записи в ответ на a savePresentedItemChangesWithCompletionHandler: сообщение. Обычно, скоординированные записи должны ожидать всех скоординированных операций чтения на том же файле или каталоге. Однако, когда скоординированное чтение вынуждает предъявителя файла записать его содержание, операция записи должна продолжиться, прежде чем операция чтения может закончиться.

    • Предотвращает условия состязания, которые могли произойти, когда предъявитель файла отправляется a presentedItemDidMoveToURL: обменивайтесь сообщениями и одновременно — но прежде чем это сообщение исключается из очереди — предъявитель файла ставит в очередь работу с помощью старого URL на различной очереди. Для координаторов файла для работы эффективно, однако, координатор должен быть инициализирован на той же очереди работы что использование предъявителя файла для получения его сообщений.

    • Позволяет механизму координации файла корректно обрабатывать первоначально содержащих предъявителей файла nil в presentedItemURL свойство, но это может позже содержать не -nil значение после создания элемента с помощью скоординированной операции записи. Например, AppKit использует эту функцию для инстанцирования новый NSDocument объекты сразу, вместо того, чтобы ожидать, пока пользователь не сохраняет документ.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Регистрирует указанный объект предъявителя файла так, чтобы он мог получить уведомления.

    Объявление

    Swift

    class func addFilePresenter(_ filePresenter: NSFilePresenter)

    Objective C

    + (void)addFilePresenter:(id<NSFilePresenter>)filePresenter

    Параметры

    filePresenter

    Предъявитель файла возражает для регистрации.

    Обсуждение

    Этот метод регистрирует широкий процесс объекта предъявителя файла. Таким образом любой координатор файла возражает, что Вы создаете, позже автоматически знают о предъявителе файла, возражают и знают для обмена сообщениями его, когда затронут его файл или каталог.

    Обязательно сбалансируйте вызовы к этому методу с соответствующим вызовом к removeFilePresenter: метод. Необходимо удалить предъявителей файла из процесса широкий реестр, прежде чем объект будет освобожден, даже в собравшем «мусор» приложении.

    При вызове этого метода, в то время как скоординированные операции файла идут уже полным ходом в другом процессе, предъявитель файла может не получить уведомления для той работы. Для предотвращения без вести пропавших таких уведомлений создайте координатора файла, вызовите coordinateReadingItemAtURL:options:error:byAccessor: метод и регистр Ваш предъявитель файла возражают там. Если Вы собираетесь считать файл и затем создать предъявителя файла для того файла, оба действия должны произойти в том же скоординированном блоке чтения. Синхронизация на представленном файле или каталоге гарантирует, что, когда Ваш блок выполняется, все другие объекты выполнили любые задачи, и у Вас есть единственный доступ к элементу.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    + removeFilePresenter:

  • Не регистрирует указанный объект предъявителя файла.

    Объявление

    Swift

    class func removeFilePresenter(_ filePresenter: NSFilePresenter)

    Objective C

    + (void)removeFilePresenter:(id<NSFilePresenter>)filePresenter

    Параметры

    filePresenter

    Предъявитель файла возражает, чтобы не зарегистрироваться. Если объект в настоящее время не регистрируется, этот метод ничего не делает.

    Обсуждение

    Вызовите этот метод, чтобы не зарегистрировать предъявителей файла, прежде чем те объекты будут освобождены, даже в собравшем «мусор» приложении.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    + addFilePresenter:

  • Возвращает массив, содержащий в настоящее время зарегистрированные объекты предъявителя файла.

    Объявление

    Swift

    class func filePresenters() -> [AnyObject]

    Objective C

    + (NSArray *)filePresenters

    Возвращаемое значение

    Массив объектов, соответствующих NSFilePresenter протокол.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

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

    Объявление

    Swift

    var purposeIdentifier: String

    Objective C

    @property(copy) NSString *purposeIdentifier

    Обсуждение

    Скоординированные чтения и записи выполнили использование того же идентификатора цели, никогда не блокируют друг друга, даже если они происходят в различных процессах. При координировании доступа к файлу от имени предъявителя файла использовать initWithFilePresenter: и не пытайтесь установить пользовательский идентификатор цели. У каждого координатора файла экземпляр, инициализированный с тем же предъявителем файла, есть тот же идентификатор цели.

    Вы, возможно, должны установить пользовательский идентификатор цели по следующим причинам:

    • Ваше приложение имеет расширение Провайдера Файла. Любая координация файла, сделанная от имени Провайдера Файла, должна быть сделана с помощью идентификатора цели Провайдера Файла.

    • У Вас есть две отдельных подсистемы, которые должны сотрудничать для выполнения единственной высокоуровневой операции, и обе подсистемы выполняют свои собственные скоординированные чтения или записи. Используя тот же идентификатор цели в обеих подсистемах предотвращает возможные мертвые блокировки между этими двумя подсистемами.

    При создании пользовательских идентификаторов цели можно использовать обратную строку стиля DNS, такой как com.example.MyApplication.MyPurpose, или строка UUID. Вы не можете использовать nil или строки нулевой длины.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Выполняет много скоординированных чтений или - операции записи асинхронно.

    Объявление

    Swift

    func coordinateAccessWithIntents(_ intents: [AnyObject], queue queue: NSOperationQueue, byAccessor accessor: (NSError!) -> Void)

    Objective C

    - (void)coordinateAccessWithIntents:(NSArray *)intents queue:(NSOperationQueue *)queue byAccessor:(void (^)(NSError *error))accessor

    Параметры

    intents

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

    queue

    Очередь работы, на которой выполняется блок средства доступа. Очередь не должна быть nil.

    accessor

    Блочный объект, содержащий операции файла, соответствующие намерению доступа к файлу, возражает в массиве намерений.

    Блок средства доступа берет следующий параметр:

    error

    Если ошибка происходит при ожидании доступа, этот параметр содержит NSError объект, описывающий проблему. Если доступ успешно предоставляется, он установлен в nil, и можно выполнить намеченный доступ к файлу.

    Не пытайтесь получить доступ к файлам, если параметр ошибок содержит не -nil значение.

    Обсуждение

    Этот метод позволяет Вам асинхронно выполнить скоординированное чтение или записи. Можно указать любую комбинацию отдельных операций чтения или операций записи. Координатор файла ожидает асинхронно для получения доступа к файлам и затем вызывает блок средства доступа на указанную очередь.

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

    Кроме того, всегда используйте свойство URL своих поглощенных объектов при доступе к файлам в блоке средства доступа. Система обновляет это свойство для учета любых изменений в базовых файлах. Например, если файлы перемещены или переименованы, система обновляет это свойство URL для соответствия.

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

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

    Выполнение скоординированного чтения или скоординированной записи на содержании пакета файла обрабатывается как скоординированное чтение или запись к пакету в целом. В целом скоординированный доступ к каталогу, который не является пакетом файла, не затронут скоординированным доступом к содержанию каталога. Точно так же доступ к содержанию не влияет на каталог. Однако, если Вы делаете скоординированную операцию записи с помощью NSFileCoordinatorWritingForDeleting, NSFileCoordinatorWritingForMoving, или NSFileCoordinatorWritingForReplacing опции, весь скоординированный доступ к каталогу и его содержанию взаимодействуют, как будто они получали доступ к тому же URL.

    Скоординированные чтения и записи от того же координатора файла экземпляр никогда не блокируют друг друга. Однако, если Вы выполняете многократные, параллельные вызовы к coordinateAccessWithIntents:queue:byAccessor:, Вы рискуете заходить в тупик с другим процессом, так же сделавшим многократные параллельные звонки его координатору файла. Везде, где возможно, вызвать coordinateAccessWithIntents:queue:byAccessor: один раз, передающий в многократных объектах намерения доступа к файлу.

    Скоординированное чтение и - операции записи также ожидают на любых методах предъявителей файла, инициированных как часть скоординированного доступа. Скоординированный доступ инициировал вызовы метода на всех предъявителях файла для того же URL — даже на предъявителях файла в других процессах. Существует только одно исключение: координатор файла никогда не отправляет сообщения предъявителю файла, переданному initWithFilePresenter: метод.

    Скоординированные чтения инициировали следующие вызовы метода:

    • relinquishPresentedItemToReader: метод вызывают.

    • Если NSFileCoordinatorReadingWithoutChanges опция не используется тогда savePresentedItemChangesWithCompletionHandler: вызывается.

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

    Скоординированные записи инициировали следующие вызовы метода:

    И для чтения и для записи, если существуют многократные вовлеченные предъявители файла, порядок, в котором вызывают методы, не определен. Если какой-либо из предъявителей файла сигнализирует ошибку, скоординированные сбои доступа и ошибка передается блоку средства доступа.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.10 и позже.

  • Инициирует операцию чтения на единственном файле или каталоге с помощью указанных опций.

    Объявление

    Swift

    func coordinateReadingItemAtURL(_ url: NSURL, options options: NSFileCoordinatorReadingOptions, error outError: NSErrorPointer, byAccessor reader: (NSURL!) -> Void)

    Objective C

    - (void)coordinateReadingItemAtURL:(NSURL *)url options:(NSFileCoordinatorReadingOptions)options error:(NSError **)outError byAccessor:(void (^)(NSURL *newURL))reader

    Параметры

    url

    URL, идентифицирующий файл или каталог для чтения. Если другие объекты или процессы действуют на элемент в URL, фактический URL передал reader параметр может отличаться, чем тот в этом параметре.

    options

    Одна из опций чтения описана в NSFileCoordinatorReadingOptions. Если Вы передаете 0 для этого параметра, savePresentedItemChangesWithCompletionHandler: метод соответствующих предъявителей файла вызывают, прежде чем Ваш блок выполняется.

    outError

    На вводе, указателе на указатель для ошибочного объекта. Если предъявитель файла встречается с ошибкой при подготовке к этой операции чтения, та ошибка возвращается в этом параметре и блоке в reader параметр не выполняется. Если Вы отменяете эту работу перед reader блок выполняется, этот параметр содержит ошибочный объект на выводе.

    reader

    Блочный объект, содержащий операции файла, Вы хотите выполнить скоординированным способом. Этот блок получает NSURL объект, содержащий URL элемента и возвратов никакое значение. Всегда используйте URL, переданный в блок вместо значения в url параметр.

    Обсуждение

    Вы используете этот метод для выполнения связанных с чтением операций на файле или каталоге скоординированным способом. Этот метод выполняется синхронно, блокируя текущий поток до reader блокируйте заканчивает выполняться. Прежде, чем выполнить тот блок, тем не менее, координатор файла ожидает, пока другой соответствующий предъявитель файла не возражает концу происходящие действия. Точно так же Ваша операция чтения может заставить незаконченные действия для других предъявителей файла ожидать, пока Ваши операции не завершены. Ожидает ли координатор файла, зависит от того, является ли считанный элемент файлом или каталогом и также зависит от других связанных операций.

    • Если url параметр указывает файл:

      • Этот метод ожидает других писателей того же самого файла для окончания происходящих действий.

      • Этот метод ожидает, если файл является пакетом файла или каким-либо элементом в пакете файла, и другие писатели пишут в другие элементы в каталоге пакета.

      • Этот метод не ожидает других читателей файла.

      • Этот метод не ожидает писателей, управляющих родительским каталогом файла, если один из тех писателей не указал NSFileCoordinatorWritingForDeleting или NSFileCoordinatorWritingForMoving опция.

    • Если url параметр указывает каталог:

      • Если другие операции записи происходят на том же самом каталоге, этот метод ожидает.

      • Если операции записи происходят на элементах в каталоге (но не на самом каталоге), этот метод не ожидает.

      • Этот метод не ожидает других читателей каталога.

      • Этот метод не ожидает писателей, управляющих родительским каталогом каталога, если один из тех писателей не указал NSFileCoordinatorWritingForDeleting или NSFileCoordinatorWritingForMoving опция.

    При вызове этих методов объявите a __block переменная перед блоком средства доступа и инициализирует его к значению, сигнализирующему, что отказ, и затем в блоке средства доступа установил его в значение, указывающее успех. Если скоординированная работа перестала работать, то блок средства доступа никогда не работает. Переменная сигнальной метки все еще содержит значение, указывающее отказ, и NSError параметр содержит ссылку, описывающую ошибку.

    Это вызовы метода relinquishPresentedItemToReader: метод любых соответствующих предъявителей файла. Этот метод вызывают для предъявителей файла в текущем процессе и в других процессах. В зависимости от опций Вы указываете, другие методы предъявителей файла можно также вызвать. При чтении каталога пакета файла объекты предъявителя файла, в настоящее время читающие содержание того пакета файла также, получают эти уведомления. Все вызываемые методы должны возвратиться успешно, прежде чем координатор файла выполняет Ваш блок. Если многократные предъявители файла воздействуют на элемент, порядок, в котором уведомляются те предъявители, не определен.

    Не вкладывайте вызовы для регистрации методов координатора в блоке, который Вы передаете этому методу. При вызове этого метода или какого-либо из других методов координации файла из блока, координатор файла, объект выдает исключение. Если Вы хотите выполнить операцию записи из блока чтения, используйте coordinateWritingItemAtURL:options:writingItemAtURL:options:error:byAccessor: метод вместо этого. Если Вы хотите выполнить пакетную операцию чтения на многократных файлах, используйте prepareForReadingItemsAtURLs:options:writingItemsAtURLs:options:error:byAccessor: метод.

    Если устройство еще не загрузило файл в данном URL, этот метод блоки (потенциально в течение длительного времени), в то время как загружается файл. Если файл не может быть загружен, этот метод сбои. Альтернативно; используйте запрос метаданных для проверки на NSMetadataUbiquitousItemIsDownloadedKey ключ, и затем вызывает startDownloadingUbiquitousItemAtURL:error: метод для загрузки файла прежде, чем попытаться считать его.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Инициирует операцию записи на единственном файле или каталоге с помощью указанных опций.

    Объявление

    Swift

    func coordinateWritingItemAtURL(_ url: NSURL, options options: NSFileCoordinatorWritingOptions, error outError: NSErrorPointer, byAccessor writer: (NSURL!) -> Void)

    Objective C

    - (void)coordinateWritingItemAtURL:(NSURL *)url options:(NSFileCoordinatorWritingOptions)options error:(NSError **)outError byAccessor:(void (^)(NSURL *newURL))writer

    Параметры

    url

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

    options

    Одна из опций записи описана в NSFileCoordinatorWritingOptions. Опции, которые Вы указываете частично, определяют, как уведомляются предъявители файла и как этот координатор файла объект ожидает для выполнения блока.

    outError

    На вводе, указателе на указатель для ошибочного объекта. Если предъявитель файла встречается с ошибкой при подготовке к этой операции записи, та ошибка возвращается в этом параметре и блоке в writer параметр не выполняется. Если Вы отменяете эту работу перед writer блок выполняется, этот параметр содержит ошибочный объект на выводе.

    writer

    Блочный объект, содержащий операции файла, Вы хотите выполнить скоординированным способом. Этот блок получает NSURL объект, содержащий URL элемента и возвратов никакое значение. Всегда используйте URL, переданный в блок вместо значения в url параметр.

    Обсуждение

    При вызове этих методов объявите a __block переменная перед блоком средства доступа и инициализирует его к значению, сигнализирующему, что отказ, и затем в блоке средства доступа установил его в значение, указывающее успех. Если скоординированная работа перестала работать, то блок средства доступа никогда не работает. Переменная сигнальной метки все еще содержит значение, указывающее отказ, и NSError параметр содержит ссылку, описывающую ошибку.

    Вы используете этот метод для выполнения связанных с записью операций на файле или каталоге скоординированным способом. Этот метод выполняется синхронно, блокируя текущий поток до writer блокируйте заканчивает выполняться. Прежде, чем выполнить блок, тем не менее, координатор файла ожидает, пока другой соответствующий предъявитель файла не возражает концу происходящие действия. Точно так же Ваша операция записи может заставить незаконченные действия для других предъявителей файла ожидать, пока Ваши операции не завершены. Ожидает ли координатор файла, зависит от того, является ли записанный элемент файлом или каталогом и также зависит от других связанных операций.

    • Если url параметр указывает файл:

      • Этот метод ожидает других читателей и писателей того же самого файла для окончания происходящих действий.

      • Этот метод ожидает, если файл является пакетом файла или каким-либо элементом в пакете файла, и другие писатели читают или пишут в другие элементы в каталоге пакета.

      • Этот метод не ожидает читателей или писателей, управляющих родительским каталогом файла, если один из тех писателей не указал NSFileCoordinatorWritingForDeleting или NSFileCoordinatorWritingForMoving опция.

    • Если url параметр указывает каталог:

      • Если другие операции чтения или операции записи происходят на том же самом каталоге, этот метод ожидает.

      • Если операции чтения или операции записи происходят на элементах в каталоге (но не на самом каталоге), этот метод не ожидает.

      • Этот метод не ожидает читателей или писателей, управляющих родительским каталогом каталога, если один из тех писателей не указал NSFileCoordinatorWritingForDeleting или NSFileCoordinatorWritingForMoving опция.

    Это вызовы метода relinquishPresentedItemToWriter: метод любых соответствующих предъявителей файла. Этот метод вызывают для предъявителей файла в текущем процессе и в других процессах. В зависимости от опций Вы указываете, другие методы предъявителей файла можно также вызвать. При записи каталога пакета файла объекты предъявителя файла, в настоящее время читающие или пишущие содержание того пакета файла также, получают эти уведомления. Все вызываемые методы должны возвратиться успешно, прежде чем координатор файла выполняет Ваш блок. Если многократные предъявители файла воздействуют на элемент, порядок, в котором уведомляются те предъявители, не определен.

    За одним исключением не вкладывайте вызовы для регистрации методов координатора в блоке, который Вы передаете этому методу. Можно вызвать coordinateReadingItemAtURL:options:error:byAccessor: метод для чтения файла, если Вы обнаруживаете через дату модификации, проверяющую, что изменилось содержание файла. Однако при вызове этого метода из блока, координатор файла, объект выдает исключение.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Инициирует операцию чтения, содержащую последующую операцию записи.

    Объявление

    Swift

    func coordinateReadingItemAtURL(_ readingURL: NSURL, options readingOptions: NSFileCoordinatorReadingOptions, writingItemAtURL writingURL: NSURL, options writingOptions: NSFileCoordinatorWritingOptions, error outError: NSErrorPointer, byAccessor readerWriter: (NSURL!, NSURL!) -> Void)

    Objective C

    - (void)coordinateReadingItemAtURL:(NSURL *)readingURL options:(NSFileCoordinatorReadingOptions)readingOptions writingItemAtURL:(NSURL *)writingURL options:(NSFileCoordinatorWritingOptions)writingOptions error:(NSError **)outError byAccessor:(void (^)(NSURL *newReadingURL, NSURL *newWritingURL))readerWriter

    Параметры

    readingURL

    URL, идентифицирующий файл или каталог для чтения. Если другие объекты или процессы действуют на элемент в URL, фактический URL передал блоку в readerWriter параметр может отличаться, чем тот в этом параметре.

    readingOptions

    Одна из опций чтения, описанных в NSFileCoordinatorReadingOptions. Если Вы передаете 0 для этого параметра, savePresentedItemChangesWithCompletionHandler: метод соответствующих предъявителей файла вызывают, прежде чем Ваш блок выполняется.

    writingURL

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

    writingOptions

    Одна из опций записи описана в NSFileCoordinatorWritingOptions. Опции, которые Вы указываете частично, определяют, как уведомляются предъявители файла и как этот координатор файла объект ожидает для выполнения блока.

    outError

    На вводе, указателе на указатель для ошибочного объекта. Если предъявитель файла встречается с ошибкой при подготовке к этой работе, та ошибка возвращается в этом параметре и блоке в readerWriter параметр не выполняется. Если Вы отменяете эту работу перед readerWriter блок выполняется, этот параметр содержит ошибочный объект на выводе.

    readerWriter

    Блочный объект, содержащий операции чтения и операции записи, Вы хотите выполнить скоординированным способом. Этот блок получает NSURL объекты, содержащие URLs элементов, чтобы читать и записать и возвраты никакое значение. Всегда используйте URLs, переданный в блок вместо значений в readingURL и writingURL параметры.

    Обсуждение

    При вызове этих методов объявите a __block переменная перед блоком средства доступа и инициализирует его к значению, сигнализирующему, что отказ, и затем в блоке средства доступа установил его в значение, указывающее успех. Если скоординированная работа перестала работать, то блок средства доступа никогда не работает. Переменная сигнальной метки все еще содержит значение, указывающее отказ, и NSError параметр содержит ссылку, описывающую ошибку.

    Вы используете этот метод для выполнения операции чтения, которая могла бы также содержать операцию записи, которая должна быть скоординирована. Этот метод выполняется синхронно, блокируя текущий поток до readerWriter блокируйте заканчивает выполняться. При выполнении операции записи можно вызвать coordinateWritingItemAtURL:options:error:byAccessor: метод от Вашего readerWriter блок. Этот метод делает каноническую блокировку, упорядочивая, который требуется, чтобы предотвращать потенциальную мертвую блокировку операций файла.

    Этот метод выполняет те же вызовы для регистрации предъявителей и имеет то же общее поведение ожидания, как coordinateReadingItemAtURL:options:error:byAccessor: метод.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Инициирует операцию записи, включающую вторичную операцию записи.

    Объявление

    Swift

    func coordinateWritingItemAtURL(_ url1: NSURL, options options1: NSFileCoordinatorWritingOptions, writingItemAtURL url2: NSURL, options options2: NSFileCoordinatorWritingOptions, error outError: NSErrorPointer, byAccessor writer: (NSURL!, NSURL!) -> Void)

    Objective C

    - (void)coordinateWritingItemAtURL:(NSURL *)url1 options:(NSFileCoordinatorWritingOptions)options1 writingItemAtURL:(NSURL *)url2 options:(NSFileCoordinatorWritingOptions)options2 error:(NSError **)outError byAccessor:(void (^)(NSURL *newURL1, NSURL *newURL2))writer

    Параметры

    url1

    URL, идентифицирующий первый файл или каталог, который запишет. Если другие объекты или процессы действуют на элемент в URL, фактический URL передал блоку в writer параметр может отличаться от того в этом параметре.

    options1

    Одна из опций записи описана в NSFileCoordinatorWritingOptions.

    url2

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

    options2

    Одна из опций записи описана в NSFileCoordinatorWritingOptions. Опции, которые Вы указываете частично, определяют, как уведомляются предъявители файла и как этот координатор файла объект ожидает для выполнения блока.

    outError

    На вводе, указателе на указатель для ошибочного объекта. Если предъявитель файла встречается с ошибкой при подготовке к этой работе, та ошибка возвращается в этом параметре и блоке в writer параметр не выполняется. Если Вы отменяете эту работу перед writer блок выполняется, этот параметр содержит ошибочный объект на выводе.

    writer

    Блочный объект, содержащий операции записи, Вы хотите выполнить скоординированным способом. Этот блок получает NSURL объекты, содержащие URLs элементов для записи и возвраты никакое значение. Всегда используйте URLs, переданный в блок вместо значений в url1 и url2 параметры.

    Обсуждение

    При вызове этих методов объявите a __block переменная перед блоком средства доступа и инициализирует его к значению, сигнализирующему, что отказ, и затем в блоке средства доступа установил его в значение, указывающее успех. Если скоординированная работа перестала работать, то блок средства доступа никогда не работает. Переменная сигнальной метки все еще содержит значение, указывающее отказ, и NSError параметр содержит ссылку, описывающую ошибку.

    Вы используете этот метод для выполнения двух операций записи без риска тех операций, создающих мертвую блокировку. Этот метод выполняется синхронно, блокируя текущий поток до writer блокируйте заканчивает выполняться. Можно вызвать coordinateWritingItemAtURL:options:error:byAccessor: метод от Вашего writer блок. Этот метод делает каноническую блокировку, упорядочивая, который требуется, чтобы предотвращать потенциальную мертвую блокировку операций файла.

    Этот метод выполняет те же вызовы для регистрации предъявителей и имеет то же общее поведение ожидания, как coordinateWritingItemAtURL:options:error:byAccessor: метод.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Подготовьте читать или писать из многократных файлов в работе единого пакета.

    Объявление

    Swift

    func prepareForReadingItemsAtURLs(_ readingURLs: [AnyObject], options readingOptions: NSFileCoordinatorReadingOptions, writingItemsAtURLs writingURLs: [AnyObject], options writingOptions: NSFileCoordinatorWritingOptions, error outError: NSErrorPointer, byAccessor batchAccessor: ((() -> Void)!) -> Void)

    Objective C

    - (void)prepareForReadingItemsAtURLs:(NSArray *)readingURLs options:(NSFileCoordinatorReadingOptions)readingOptions writingItemsAtURLs:(NSArray *)writingURLs options:(NSFileCoordinatorWritingOptions)writingOptions error:(NSError **)outError byAccessor:(void (^)(void (^completionHandler)(void)))batchAccessor

    Параметры

    readingURLs

    Массив NSURL объекты, идентифицирующие элементы, Вы хотите читать.

    readingOptions

    Одна из опций чтения описана в NSFileCoordinatorReadingOptions. Если Вы передаете 0 для этого параметра, savePresentedItemChangesWithCompletionHandler: метод соответствующих предъявителей файла вызывают, прежде чем Ваш блок выполняется.

    writingURLs

    Массив NSURL объекты, идентифицирующие элементы, Вы хотите записать.

    writingOptions

    Одна из опций записи описана в NSFileCoordinatorWritingOptions. Опции, которые Вы указываете частично, определяют, как уведомляются предъявители файла и как этот координатор файла объект ожидает для выполнения блока.

    outError

    На вводе, указателе на указатель для ошибочного объекта. Если предъявитель файла встречается с ошибкой при подготовке к этой работе, та ошибка возвращается в этом параметре и блоке в writer параметр не выполняется. Если Вы отменяете эту работу перед batchAccessor блок выполняется, этот параметр содержит ошибочный объект на выводе.

    batchAccessor

    Блочный объект, содержащий дополнительные вызовы к методам этого класса.

    Блок берет следующий параметр:

    completionHandler

    Блок обработчика завершения. Пакетное средство доступа должно вызвать обработчик завершения, когда это закончило свое чтение и пишет вызовы.

    Обсуждение

    Используйте этот метод для подготовки координатора файла к многократным операциям чтения и операциям записи. Поскольку координация файла требует межпроцессного взаимодействия, намного более эффективно обработать изменения в пакетном режиме в больших количествах файлов и каталогов, чем изменить каждый элемент индивидуально. Координатор файла использует значения в readingURLs и writingURLs параметры, вместе с чтением и записью опций, для подготовки любых соответствующих предъявителей файла к предстоящим операциям. В частности это использует эти параметры таким же образом в качестве coordinateReadingItemAtURL:options:error:byAccessor: и coordinateWritingItemAtURL:options:error:byAccessor: методы для определения, который методы предъявителя файла вызвать.

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

    Просто не передавайте этот метод весь URLs, передающийся во вложенные координатные методы. Вместо этого передайте только файлы верхнего уровня и каталоги, вовлеченные в работу. Этот метод инициировал сообщения предъявителям файла тех элементов и предъявителям файла любых элементов, содержавших теми элементами.

    В большинстве случаев передача того же чтения и записи опций и к этому методу и к содержавшим операциям координации избыточна. Например, является часто надлежащим передать NSFileCoordinatorReadingWithoutChanges к вложенным операциям чтения. Этот метод уже инициировал вызов к savePresentedItemChangesWithCompletionHandler:. Отдельные операции чтения не должны инициировать дополнительные вызовы.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Объявляет, что Ваше приложение перемещает файл в новый URL.

    Объявление

    Swift

    func itemAtURL(_ oldURL: NSURL, willMoveToURL newURL: NSURL)

    Objective C

    - (void)itemAtURL:(NSURL *)oldURL willMoveToURL:(NSURL *)newURL

    Параметры

    oldURL

    Старое расположение файла или каталога.

    newURL

    Новое расположение файла или каталога.

    Обсуждение

    Этот метод предназначается для приложений, принимающих Тестовую среду приложения.

    Некоторые приложения должны переименовать файлы при сохранении их. Например, когда пользователь добавляет присоединение к документу обогащенного текста, TextEdit изменяет расширение файла документа от .rtf к .rtfd. В таком случае, в поигравшем в песочнице приложении, необходимо вызвать этот метод для объявления намерения переименовать файл без пользовательского утверждения.

    После того, как процесс переименования успешно выполняется, вызовите itemAtURL:didMoveToURL: метод, с теми же параметрами, для обеспечения приложения непрерывным доступом к файлу под его новым именем, также бросая доступ к любому файлу, появляющемуся со старым названием.

    Если Ваше приложение OS X не поигралось в песочнице, этот метод не служит никакой цели. Этот метод нефункционален в iOS.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.8 и позже.

  • Уведомляет соответствующих предъявителей файла что расположение измененного файла или каталога.

    Объявление

    Swift

    func itemAtURL(_ oldURL: NSURL, didMoveToURL newURL: NSURL)

    Objective C

    - (void)itemAtURL:(NSURL *)oldURL didMoveToURL:(NSURL *)newURL

    Параметры

    oldURL

    Старое расположение файла или каталога.

    newURL

    Новое расположение файла или каталога.

    Обсуждение

    Если Вы перемещаете или переименовываете файл или каталог как часть операции записи, вызовите этот метод, чтобы уведомить соответствующих предъявителей файла, что произошло изменение. Это вызовы метода presentedItemDidMoveToURL: метод для любого из предъявителей файла элемента. Если элемент является каталогом, это вызовы метода presentedItemDidMoveToURL: на предъявителях файла для содержания элемента. Наконец, это вызывает presentedSubitemAtURL:didMoveToURL: на предъявителе файла любого каталога, содержащего элемент.

    Необходимо вызвать этот метод от скоординированного блока записи. Вызов этого метода с тем же URL в oldURL и newURL параметры безопасны. Этот вызов должен сбалансировать вызов к itemAtURL:willMoveToURL:.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Отмены любые активные вызовы координации файла.

    Объявление

    Swift

    func cancel()

    Objective C

    - (void)cancel

    Обсуждение

    Используйте этот метод для отмены любых активных вызовов для координирования чтения или записи файла. Если блок, переданный вызову координации файла, еще не был выполнен — возможно, потому что координатор файла все еще ожидает ответа от других предъявителей файла — координатор файла, метод прекращает ожидать ответа, не выполняет свой блок и возвращает ошибочный объект с кодом ошибки NSUserCancelledError. Однако, если блок уже выполняется, координатор файла, которого не возвращает метод, пока блок не заканчивает выполняться.

    Можно вызвать этот метод от любого потока приложения, и это сразу возвращается, не ожидая координатора файла объект ответить. Таким образом, когда этот метод возвращается, Вы не можете предположить, что операция чтения или операция записи произошли или не происходили. (Фактически, для этого метода возможно возвратиться, в то время как координатор файла посреди выполнения блока.), Если Вы хотите знать, произошла ли работа фактически, необходимо отследить ее сами путем установки флага, когда блок начинает выполняться или при помощи некоторых других средних значений.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Опции использовать при чтении содержания или атрибутов файла или каталога.

    Объявление

    Swift

    struct NSFileCoordinatorReadingOptions : RawOptionSetType { init(_ rawValue: UInt) init(rawValue rawValue: UInt) static var WithoutChanges: NSFileCoordinatorReadingOptions { get } static var ResolvesSymbolicLink: NSFileCoordinatorReadingOptions { get } static var ImmediatelyAvailableMetadataOnly: NSFileCoordinatorReadingOptions { get } static var ForUploading: NSFileCoordinatorReadingOptions { get } }

    Objective C

    enum { NSFileCoordinatorReadingWithoutChanges = 1 << 0, NSFileCoordinatorReadingResolvesSymbolicLink = 1 << 1 NSFileCoordinatorReadingImmediatelyAvailableMetadataOnly = 1 << 2 NSFileCoordinatorReadingForUploading = 1 << 3 }; typedef NSUInteger NSFileCoordinatorReadingOptions;

    Константы

    • WithoutChanges

      NSFileCoordinatorReadingWithoutChanges

      Укажите эту константу, если Вашему коду не нужны другие объекты сохранить изменения сначала. Если Вы не указываете эту константу, savePresentedItemChangesWithCompletionHandler: метод соответствующих предъявителей файла вызывают, прежде чем Ваш код читает элемент.

      Доступный в OS X v10.7 и позже.

    • ResolvesSymbolicLink

      NSFileCoordinatorReadingResolvesSymbolicLink

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

      Доступный в OS X v10.7 и позже.

    • ImmediatelyAvailableMetadataOnly

      NSFileCoordinatorReadingImmediatelyAvailableMetadataOnly

      Укажите эту константу, если Вы хотите считать метаданные элемента, не инициировав загрузку.

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

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

      Доступный в OS X v10.10 и позже.

    • ForUploading

      NSFileCoordinatorReadingForUploading

      Укажите это содержание при чтении элемента в целях загрузки его содержания.

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

      Если считанный элемент является каталогом (таким как пакет документов), то снимок является новым файлом, содержащим заархивированное содержание каталога. URL передал блочным точкам средства доступа к заархивированному файлу.

      При использовании этой опции можно загрузить документ вне блока средства доступа. Однако необходимо открыть дескриптор файла для файла или переместить файл в блоке средства доступа прежде, чем сделать так. Координатор файла расцепляет файл после блочных возвратов, представляя его недоступный через URL.

      Доступный в OS X v10.10 и позже.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Опции использовать при изменении содержания или атрибутов файла или каталога.

    Объявление

    Swift

    struct NSFileCoordinatorWritingOptions : RawOptionSetType { init(_ rawValue: UInt) init(rawValue rawValue: UInt) static var ForDeleting: NSFileCoordinatorWritingOptions { get } static var ForMoving: NSFileCoordinatorWritingOptions { get } static var ForMerging: NSFileCoordinatorWritingOptions { get } static var ForReplacing: NSFileCoordinatorWritingOptions { get } static var ContentIndependentMetadataOnly: NSFileCoordinatorWritingOptions { get } }

    Objective C

    enum { NSFileCoordinatorWritingForDeleting = 1 << 0, NSFileCoordinatorWritingForMoving = 1 << 1, NSFileCoordinatorWritingForMerging = 1 << 2 NSFileCoordinatorWritingForReplacing = 1 << 3, NSFileCoordinatorWritingContentIndependentMetadataOnly = 1 << 4 }; typedef NSUInteger NSFileCoordinatorWritingOptions;

    Константы

    • ForDeleting

      NSFileCoordinatorWritingForDeleting

      Когда эта константа указана, координатор файла вызывает accommodatePresentedItemDeletionWithCompletionHandler: или accommodatePresentedSubitemDeletionAtURL:completionHandler: метод соответствующих предъявителей файла, чтобы дать им шанс внести изменения перед элементом удален.

      Доступный в OS X v10.7 и позже.

    • ForMoving

      NSFileCoordinatorWritingForMoving

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

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

      Доступный в OS X v10.7 и позже.

    • ForMerging

      NSFileCoordinatorWritingForMerging

      Когда эта константа указана, координатор файла вызывает savePresentedItemChangesWithCompletionHandler: метод соответствующих предъявителей файла, чтобы дать им шанс сохранить их изменения перед Вашим кодом вносит свои изменения.

      Доступный в OS X v10.7 и позже.

    • ForReplacing

      NSFileCoordinatorWritingForReplacing

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

      Доступный в OS X v10.7 и позже.

    • ContentIndependentMetadataOnly

      NSFileCoordinatorWritingContentIndependentMetadataOnly

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

      Любые изменения, записанные в содержание элемента во время этой скоординированной записи, не могут быть сохранены или могут перестать работать. Изменение метаданных, связанных с содержанием элемента, также не поддерживается, и те изменения не могут быть сохранены. Например, изменяя значение NSURLTagNamesKey поддерживается, но изменение значения NSURLContentModificationDateKey не.

      Доступный в OS X v10.10 и позже.

    Обсуждение

    Необходимо указать только один постоянный за один раз для данной операции записи.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.7 и позже.