NSFilePresenter
NSFilePresenter
протокол должен быть реализован объектами, позволяющими пользователю просматривать или редактировать содержание файлов или каталогов. Вы используете предъявителей файла в сочетании с NSFileCoordinator
возразите для координирования доступа к файлу или каталогу среди объектов приложения и между приложением и другими процессами. Когда изменения в элементе происходят, система уведомляет объекты, принимающие этот протокол, и дает им шанс ответить соответственно.
Вы используете методы этого протокола для ответа на действия, собирающиеся быть взятыми на представленном файле или каталоге. Когда другой объект или процесс используют координатора файла, чтобы начать читать или писать файл или каталог, координатор файла уведомляет все представленные объекты, заинтересованные элементом сначала. Это уведомляет объекты предъявителя путем вызова одного из методов, определенных этим протоколом на том объекте. Фактический вызов того метода происходит на очереди работы в presentedItemOperationQueue
свойство. Ваш предъявитель файла должен предоставить этой очереди. Если Ваша очередь поддерживает параллельное выполнение операций, методы Вашего объекта предъявителя должны быть ориентированы на многопотоковое исполнение и быть в состоянии работать в многократных очередях одновременно.
Можно использовать предъявителей файла для координирования доступа к файлу или каталогу среди объектов приложения. Если другой процесс использует координатора файла для того же файла или каталога, Ваши объекты предъявителя так же уведомляются каждый раз, когда другой процесс вносит свои изменения. Ваши объекты предъявителя не уведомляются об изменениях, внесенных непосредственно с помощью низкоуровневого чтения и вызовов записи к файлу. Только изменения, проходящие через координатора файла результат в уведомлениях.
Для получения информации о том, как использовать предъявителей файла с координатором файла объект, посмотрите Ссылку класса NSFileCoordinator.
Предъявители файла и iOS
Если Ваше приложение вводит фон с активным предъявителем файла, какие-либо другие процессы, выполняющие скоординированное чтение, или запись на представленном файле может зайти в тупик. Для предотвращения этой ситуации вызвать removeFilePresenter:
удалить предъявителя файла в applicationDidEnterBackground:
метод или в ответ на a UIApplicationDidEnterBackgroundNotification
уведомление. Вызвать addFilePresenter:
добавить предъявителя файла снова в applicationWillEnterForeground:
метод или в ответ на a UIApplicationWillEnterForegroundNotification
уведомление.
Наследование
Не применимый
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
-
presentedItemURL presentedItemURL
СвойствоURL представленного файла или каталога. (требуемый) (только для чтения)
Объявление
Swift
@NSCopying var presentedItemURL: NSURL? { get }
Objective C
@property(readonly, copy) NSURL *presentedItemURL
Обсуждение
Предъявители файла должны реализовать это свойство и использовать его для возврата файла или каталога интереса. Если этот объект представляет группу связанных файлов, что все находятся в том же каталоге, указывают URL каталога вместо того, чтобы создать отдельные объекты предъявителя для каждого файла. Например, приложение единственного окна, управляющее многократными файлами в каталоге проекта, должно контролировать каталог проекта.
URL, связанный с Вашим элементом, могут требовать объекты, не связанные с Вашим предъявителем. Поэтому Ваша реализация метода доступа для этого свойства должна быть ориентирована на многопотоковое исполнение и способна к выполнению на многократной отгрузке или очередях работы одновременно.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Очередь работы, в которой можно выполнить связанные с предъявителем сообщения. (требуемый) (только для чтения)
Объявление
Swift
var presentedItemOperationQueue: NSOperationQueue { get }
Objective C
@property(readonly, retain) NSOperationQueue *presentedItemOperationQueue
Обсуждение
Поскольку другие объекты и процессы взаимодействуют с представленным элементом, системные очереди соответствующие сообщения для этого объекта предъявителя на очереди работы в этом свойстве. Например, когда другой процесс пытается считать файл, представленный этим объектом, система помещает вызов этого объекта
relinquishPresentedItemToReader:
метод на очереди для выполнения. Другой процесс должен ожидать для чтения файла, пока тот метод не исключается из очереди и выполняется. Запросы на представленный URL объекта не обрабатываются на этой очереди.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
URL основного представленного файла или каталога вторичного элемента. (только для чтения)
Объявление
Swift
@NSCopying optional var primaryPresentedItemURL: NSURL? { get }
Objective C
@property(readonly, copy) NSURL *primaryPresentedItemURL
Обсуждение
Это свойство поддерживает Тестовую среду приложения в OS X.
Некоторые приложения требуют доступа к вторичным файлам или каталогам с именами, связанными с основным, выбранным пользователями файлом. Например, файл подзаголовка, условно, имеет то же имя как свой соответствующий файл ролика, но с различным расширением файла. Если проигрыватель фильмов поигрался в песочнице,
NSOpenPanel
объект предоставит доступ только к файлу пользовательского выбранного фильма (основной элемент) и не его связанному файлу подзаголовка (вторичный элемент).Для получения доступа к вторичному элементу сначала зарегистрируйтесь
NSFilePresenter
объект для него. В любой точке в ее существовании вторичный элемент должен быть в состоянии возвратитьсяNSURL
возразите против его основного элемента. Это сделано при помощи этого свойства. Сделано получая доступ к вторичному элементу, не зарегистрируйте объект предъявителя файла.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.8 и позже.
-
Уведомляет Ваш объект, что другой объект или процесс хотят считать представленный файл или каталог.
Объявление
Swift
optional func relinquishPresentedItemToReader(_
reader
: ((() -> Void)!) -> Void)Objective C
- (void)relinquishPresentedItemToReader:(void (^)(void (^reacquirer)(void)))
reader
Параметры
reader
Блочный объект, берущий другой блок в качестве параметра и не возвращающий значения.
reacquirer
блок является тем, который Вы передаетеreader
блокируйте так, чтобы Ваш объект мог быть уведомлен когдаreader
сделан. Если Ваш объект не должен быть уведомлен, он может передатьnil
дляreacquirer
блок.Обсуждение
Когда другой объект хочет читать из представленного URL, Вы используете этот метод для обеспечения надлежащего ответа. Например, когда этот метод вызывают, Вы могли бы временно прекратить вносить изменения в файл или каталог. После предпринятия любых надлежащих шагов необходимо выполнить блок в
reader
параметр, чтобы позволить объекту ожидания знать, что это может теперь продолжиться с его задачей. Когда читатель выполнил его задачу, передает Ваш собственный блок читателю и использует тот блок, чтобы повторно получить файл или URL для Вашего собственного использования, если Вы хотите быть уведомленными.Следующее перечисление показывает простую реализацию этого метода, устанавливающего булев флаг, что контролируемый файл не перезаписываем в данный момент. После установки флага это выполняет блок читателя и передает в еще одном блоке для читателя для выполнения, когда это сделано.
- (void)relinquishPresentedItemToReader:(void (^)(void (^reacquirer)(void))) reader
{
// Prepare for another object to read the file.
self.fileIsWritable = NO;
// Now let the reader know that it can have the file.
// But pass a reacquisition block so that this object
// can update itself when the reader is done.
reader(^{
self.fileIsWritable = YES;
});
}
Ваша реализация этого метода выполняется с помощью очереди в
presentedItemOperationQueue
свойство. Ваш блок reacquirer выполняется на очереди, связанной с читателем.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Уведомляет Ваш объект, что другой объект или процесс хотят записать в представленный файл или каталог.
Объявление
Swift
optional func relinquishPresentedItemToWriter(_
writer
: ((() -> Void)!) -> Void)Objective C
- (void)relinquishPresentedItemToWriter:(void (^)(void (^reacquirer)(void)))
writer
Параметры
writer
Блочный объект, берущий другой блок в качестве параметра и не возвращающий значения.
reacquirer
блок является тем, который Вы передаетеwriter
блокируйте так, чтобы Ваш объект мог быть уведомлен когдаwriter
сделан. Если Ваш объект не должен быть уведомлен, он может передатьnil
дляreacquirer
блок.Обсуждение
Когда другой объект хочет записать в представленный URL, Вы используете этот метод для обеспечения надлежащего ответа. Например, когда этот метод вызывают, Вы, вероятно, прекратили бы вносить изменения в файл или каталог. После предпринятия любых надлежащих шагов необходимо выполнить блок в
writer
параметр, чтобы позволить объекту ожидания знать, что это может теперь продолжиться с его задачей. Когда писатель выполнил его задачу, передает Ваш собственный блок писателю и использует тот блок, чтобы повторно получить файл или URL для Вашего собственного использования, если Вы хотите быть уведомленными.Если писатель изменяет файл или каталог, Вы не должны включать те изменения в свой блок reacquirer. Вместо этого реализуйте
presentedItemDidChange
метод и использование это для обнаружения, когда писатель фактически записал его изменения в диске.Следующее перечисление показывает простую реализацию этого метода, устанавливающего булев флаг, что контролируемый файл не перезаписываем в данный момент. После установки флага это выполняет блок писателя и передает в еще одном блоке для писателя для выполнения, когда это сделано.
- (void)relinquishPresentedItemToWriter:(void (^)(void (^reacquirer)(void))) writer
{
// Prepare for another object to write to the file.
self.fileIsWritable = NO;
// Now let the writer know that it can have the file.
// But pass a reacquisition block so that this object
// can update itself when the writer is done.
writer(^{
self.fileIsWritable = YES;
});
}
Ваша реализация этого метода выполняется с помощью очереди в
presentedItemOperationQueue
свойство. Ваш блок reacquirer выполняется на очереди, связанной с писателем.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Говорит Вашему объекту сохранить любые несохраненные изменения для представленного элемента.
Объявление
Swift
optional func savePresentedItemChangesWithCompletionHandler(_
completionHandler
: (NSError!) -> Void)Objective C
- (void)savePresentedItemChangesWithCompletionHandler:(void (^)(NSError *errorOrNil))
completionHandler
Параметры
completionHandler
Блочный объект вызвать после сохранения изменений. Если Вы сохранили свои изменения успешно, передачу
nil
для блокаerrorOrNil
параметр; иначе, передайте ошибочный объект указание, почему не могли быть сохранены изменения.Обсуждение
Координатор файла вызывает этот метод, чтобы гарантировать, чтобы все объекты, пытающиеся получить доступ к файлу или каталогу, видели то же содержание. Реализуйте этот метод, если Ваш объект может изменить представленный элемент в пути, требующем, чтобы Вы записали те изменения обратно в диске. Если Ваш объект предъявителя не вносит изменения, которые должны быть сохранены, Вы не должны реализовывать этот метод.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
accommodatePresentedItemDeletionWithCompletionHandler (_:) - accommodatePresentedItemDeletionWithCompletionHandler:
Говорит Вашему объекту, что его представленный элемент собирается быть удаленным.
Объявление
Swift
optional func accommodatePresentedItemDeletionWithCompletionHandler(_
completionHandler
: (NSError!) -> Void)Objective C
- (void)accommodatePresentedItemDeletionWithCompletionHandler:(void (^)(NSError *errorOrNil))
completionHandler
Параметры
completionHandler
Блочный объект вызвать после обновления Ваших структур данных. Передача
nil
к блокуerrorOrNil
параметр, если Вы смогли успешно подготовиться к удалению элемента. Передайте ошибочный объект, если Ваш объект не мог бы подготовиться должным образом.Обсуждение
Когда представленный элемент Вашего объекта собирается быть удаленным, координатор файла вызывает этот метод. Можно использовать этот метод для выполнения любых действий, которые необходимы для подготовки к удалению. Например, объекты документа обычно используют этот метод для закрытия документа.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит Вашему объекту, что был переименован представленный перемещенный элемент или.
Объявление
Swift
optional func presentedItemDidMoveToURL(_
newURL
: NSURL)Objective C
- (void)presentedItemDidMoveToURL:(NSURL *)
newURL
Параметры
newURL
URL, содержащий новый путь к представленному элементу.
Обсуждение
Используйте этот метод для обновления значения, возвращенного
presentedItemURL
свойство Вашего объекта.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Говорит Вашему объекту, что содержание представленного элемента или приписывает измененный.
Объявление
Swift
optional func presentedItemDidChange()
Objective C
- (void)presentedItemDidChange
Обсуждение
Можно использовать этот метод для обновления внутренних структур данных для отражения изменений в представленном элементе. Этот метод сообщает об обоих изменениях в содержании файла, таком как данные в файле или файлах в каталоге или атрибутах элемента, такой как, был ли переключен Скрыть дополнительный флажок файла.
Поскольку этот метод уведомляет Вас и относительно атрибута и относительно изменений содержания, Вы могли бы хотеть проверить дату модификации прежде напрасно перечитать содержание файла. Когда объект в последний раз внесенные изменения в файл и сравнивает ту дату с текущей датой модификации элемента, чтобы сделать это, необходимо сохранить дату. Используйте
coordinateReadingItemAtURL:options:error:byAccessor:
метод координатора файла для обеспечения эксклюзивного доступа к файлу при чтении текущей даты модификации.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что была добавлена новая версия файла или пакета файла. (требуемый)
Объявление
Swift
optional func presentedItemDidGainVersion(_
version
: NSFileVersion)Objective C
- (void)presentedItemDidGainVersion:(NSFileVersion *)
version
Параметры
version
Объект версии файла, содержащий информацию о новой версии файла.
Обсуждение
Ваш делегат может использовать этот метод, чтобы определить, как включить данные от новой версии пакета файла или файла. Если файл не был изменен Вашим кодом, Вы могли бы просто обновить к новой версии бесшумно. Однако, если Ваше приложение имеет свои собственные изменения, Вы, возможно, должны были бы спросить пользователя, как продолжить.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что была удалена версия файла или пакета файла. (требуемый)
Объявление
Swift
optional func presentedItemDidLoseVersion(_
version
: NSFileVersion)Objective C
- (void)presentedItemDidLoseVersion:(NSFileVersion *)
version
Параметры
version
Объект версии файла, содержащий информацию об удаленной версии.
Обсуждение
Ваш делегат может использовать этот метод, чтобы определить, как обработать потерю указанной версии файла. Можно попытаться вернуться представленный документ предыдущей версии, или Вы могли бы хотеть предложить пользователю о том, как продолжить.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что некоторый другой объект разрешил конфликт версий для файла предъявителя или пакета файла. (требуемый)
Объявление
Swift
optional func presentedItemDidResolveConflictVersion(_
version
: NSFileVersion)Objective C
- (void)presentedItemDidResolveConflictVersion:(NSFileVersion *)
version
Параметры
version
Объект версии, содержащий конфликтное изменение.
Обсуждение
Ваш делегат может использовать этот метод для ответа на разрешение конфликта версий различным предъявителем файла. Если версия Вашего приложения, работающего на другом устройстве, разрешает конфликт сначала, это могло бы произойти. Вы могли бы тогда использовать этот метод для обновления пользовательского интерфейса, чтобы указать, что больше нет конфликта.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что элемент в представленном каталоге получил новую версию. (требуемый)
Объявление
Swift
optional func presentedSubitemAtURL(_
url
: NSURL, didGainVersionversion
: NSFileVersion)Objective C
- (void)presentedSubitemAtURL:(NSURL *)
url
didGainVersion:(NSFileVersion *)version
Параметры
url
URL элемента в представленном каталоге, получившем новую версию. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
version
Объект версии файла, содержащий информацию о новой версии файла.
Обсуждение
Ваш делегат может использовать этот метод, чтобы определить, как включить данные от новой версии элемента. Это могло бы включить слияние версии тихо или выяснение у пользователя о том, как продолжить.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что элемент в представленном каталоге потерял существующую версию. (требуемый)
Объявление
Swift
optional func presentedSubitemAtURL(_
url
: NSURL, didLoseVersionversion
: NSFileVersion)Objective C
- (void)presentedSubitemAtURL:(NSURL *)
url
didLoseVersion:(NSFileVersion *)version
Параметры
url
URL элемента в представленном каталоге, потерявшем версию. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
version
Объект версии файла, содержащий информацию об удаленной версии.
Обсуждение
Ваш делегат может использовать этот метод, чтобы определить, как обработать потерю указанной версии файла. Для старой версии Вам ничего не, возможно, придется сделать. Однако, если бы Ваше приложение в настоящее время использует потерянную версию, необходимо было бы обновить пользовательский интерфейс приложения или предложить пользователю о том, как продолжить.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
presentedSubitemAtURL (_: didResolveConflictVersion:) - presentedSubitemAtURL:didResolveConflictVersion:
ТребуемыйГоворит делегату, что элементу в представленном каталоге разрешил конфликт версий внешний объект. (требуемый)
Объявление
Swift
optional func presentedSubitemAtURL(_
url
: NSURL, didResolveConflictVersionversion
: NSFileVersion)Objective C
- (void)presentedSubitemAtURL:(NSURL *)
url
didResolveConflictVersion:(NSFileVersion *)version
Параметры
url
URL элемента в представленном каталоге, который был в конфликте. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
version
Объект версии, содержащий конфликтное изменение.
Обсуждение
Ваш делегат может использовать этот метод для ответа на разрешение конфликта версий различным предъявителем файла. Если версия Вашего приложения, работающего на другом устройстве, разрешает конфликт сначала, это могло бы произойти. Вы могли бы тогда использовать этот метод для обновления пользовательского интерфейса, чтобы указать, что больше нет конфликта.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
accommodatePresentedSubitemDeletionAtURL (_: completionHandler:) - accommodatePresentedSubitemDeletionAtURL:completionHandler:
ТребуемыйГоворит делегату, что некоторый объект хочет удалить элемент, который является в представленном каталоге. (требуемый)
Объявление
Параметры
url
URL элемента, удаляемого из представленного каталога. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
completionHandler
Блочный объект вызвать после обновления Ваших структур данных. Передача
nil
к блокуerrorOrNil
параметр, если Вы смогли успешно подготовиться к удалению элемента. Передайте ошибочный объект, если Ваш объект не мог бы подготовиться должным образом.Обсуждение
Этот метод важен для приложений тот существующие каталоги. Это могло бы произойти, если делегат управляет содержанием каталога или управляет файлом, реализованным как пакет файла. Когда вызвано, Ваша реализация этого метода должна принять любые меры, должен был обновить Ваше приложение для обработки удаления указанного файла.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату, что элемент был добавлен к представленному каталогу. (требуемый)
Объявление
Swift
optional func presentedSubitemDidAppearAtURL(_
url
: NSURL)Objective C
- (void)presentedSubitemDidAppearAtURL:(NSURL *)
url
Параметры
url
URL элемента, добавляемого к представленному каталогу. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
Обсуждение
Этот метод важен для приложений тот существующие каталоги. Это могло бы произойти, если делегат управляет содержанием каталога или управляет файлом, реализованным как пакет файла. Ваша реализация этого метода должна принять любые меры, необходимые для слияния нового файла или каталога в представленное содержание. Например, Вы могли бы добавить новый элемент к структурам данных своего приложения и обновить Ваш пользовательский интерфейс.
Если представленный каталог является пакетом файла, системные вызовы
presentedItemDidChange
метод, если Ваш делегат не реализует этот метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату что элемент в представленном каталоге, перемещенном в новое расположение. (требуемый)
Объявление
Параметры
oldURL
Исходный URL элемента в представленном каталоге. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
newURL
Новый URL для элемента. Этот URL может или не может быть расположен в представленном каталоге.
Обсуждение
Этот метод важен для приложений тот существующие каталоги. Это могло бы произойти, если делегат управляет содержанием каталога или управляет файлом, реализованным как пакет файла. Ваша реализация этого метода должна принять любые меры, необходимые для обработки изменения в расположении указанного элемента. Например, Вы могли бы обновить ссылки на элемент в структурах данных Вашего приложения и обновить Ваш пользовательский интерфейс.
Если представленный каталог является пакетом файла, системные вызовы
presentedItemDidChange
метод, если Ваш делегат не реализует этот метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит делегату что содержание или атрибуты указанного измененного элемента. (требуемый)
Объявление
Swift
optional func presentedSubitemDidChangeAtURL(_
url
: NSURL)Objective C
- (void)presentedSubitemDidChangeAtURL:(NSURL *)
url
Параметры
url
URL элемента в изменившемся представленном каталоге. Элемент не должен быть на верхнем уровне представленного каталога, но может самостоятельно быть во вложенном подкаталоге.
Обсуждение
Этот метод важен для приложений тот существующие каталоги. Это могло бы произойти, если делегат управляет содержанием каталога или управляет файлом, реализованным как пакет файла. Ваша реализация этого метода должна принять любые меры, необходимые для обработки изменения в содержании или атрибутах указанного элемента.
Если представленный каталог является пакетом файла, системные вызовы
presentedItemDidChange
метод, если Ваш делегат не реализует этот метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.