NSItemProvider
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCopying
-
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 8.0 и позже.
NSItemProvider
объект обеспечивает ленивый и безопасный способ передать данные между приложением узла и расширением. Объект провайдера элемента обертывает данные, такие как текст, изображения или URLs и хранит информацию типа, чтобы помочь процессам идентифицировать те данные. Когда Вы фактически хотите данные в провайдере элемента, Вы загружаете их асинхронно, который дает время провайдера элемента для передачи их от другого процесса по мере необходимости.
Расширение обычно встречается с провайдерами элемента при исследовании attachments
свойство NSExtensionItem
объект. Во время того исследования расширение может использовать hasItemConformingToTypeIdentifier:
метод для поиска данных, которые это распознает. Провайдеры элемента используют значения универсального идентификатора типа (UTI) для идентификации данных, которые они содержат. После нахождения типа данных, которые может использовать Ваше расширение, оно вызывает loadItemForTypeIdentifier:options:completionHandler:
метод для загрузки фактических данных, поставленных предоставленному обработчику завершения.
Можно создать провайдеров элемента для продажи данных к другому процессу. Расширение, изменяющее исходный элемент данных, может создать новое NSItemProvider
объект передать обратно приложению узла. При создании элементов данных Вы указываете свой объект данных и тип того объекта. Можно дополнительно использовать previewImageHandler
свойство для генерации изображения предварительного просмотра для данных.
Единственный провайдер элемента может использовать пользовательские блоки для предоставления его данных во многих различных форматах. При конфигурировании провайдера элемента используйте registerItemForTypeIdentifier:loadHandler:
метод для регистрации блоков и форматов каждый поддерживает. Когда клиент запрашивает данные в определенном формате, провайдер элемента выполняет соответствующий блок, который тогда ответственен за принуждение данных к надлежащему типу и возврату его клиенту.
-
Инициализирует и возвращает провайдера элемента с содержанием указанного файла.
Объявление
Swift
convenience init?(contentsOfURL
fileURL
: NSURL!)Objective C
- (instancetype)initWithContentsOfURL:(NSURL *)
fileURL
Параметры
fileURL
URL файла для использования для данных провайдера элемента. Провайдер элемента использует расширение файла для определения UTI для связанных данных.
Возвращаемое значение
Провайдер элемента для указанного файла или
nil
если произошла ошибка.Обсуждение
Используйте этот метод для инициализации провайдера элемента с содержанием файла.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
init (item:typeIdentifier:) - initWithItem:typeIdentifier:
Определяемый инициализаторИнициализирует и возвращает провайдера элемента с указанным объектом и информацией о типе.
Объявление
Swift
init(item
item
: NSSecureCoding?, typeIdentifiertypeIdentifier
: String?)Objective C
- (instancetype)initWithItem:(id<NSSecureCoding>)
item
typeIdentifier:(NSString *)typeIdentifier
Параметры
item
Объект, содержащий данные, Вы хотите обеспечить. Можно указать
nil
для этого параметра и элементов регистра и типов позже.typeIdentifier
Строка, представляющая UTI элемента. Если
item
неnil
, этот параметр не должен бытьnil
.Возвращаемое значение
Провайдер элемента для указанного элемента.
Обсуждение
Используйте этот метод для инициализации провайдера элемента для объектов в приложении. Провайдер элемента регистрирует Ваш объект в указанном типе. Последующие запросы на тот же самый тип возвращают указанное
item
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
Регистрирует блок для того, чтобы предоставить данные в указанном формате.
Объявление
Swift
func registerItemForTypeIdentifier(_
typeIdentifier
: String, loadHandlerloadHandler
: NSItemProviderLoadHandler)Objective C
- (void)registerItemForTypeIdentifier:(NSString *)
typeIdentifier
loadHandler:(NSItemProviderLoadHandler)loadHandler
Параметры
typeIdentifier
Строка, представляющая желаемый UTI.
loadHandler
Блок, способный к возврату элемента данных как указанный тип. Для получения информации о реализации этого блока посмотрите
NSItemProviderLoadHandler
.Обсуждение
Используйте этот метод для регистрации блоков, которые могут взять файл провайдера элемента или объект данных и преобразовать его в определенный формат данных. Ваш
loadHandler
когда клиент передает то же, блок выполняетсяtypeIdentifier
представьте в виде строки кloadItemForTypeIdentifier:options:completionHandler:
метод. В реализации Вашего блока принудите данные к указанному типу и вызовите предоставленный обработчик завершения. Необходимо вызвать обработчик завершения, или с запрошенными данными или с ошибкой.Провайдеры элемента знают, как принудить известные типы объектов, такие как изображения или строки. Используйте этот метод для регистрации блоков для принуждения пользовательских типов данных.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
registeredTypeIdentifiers
СвойствоМассив типов поддерживается провайдером элемента. (только для чтения)
Объявление
Swift
var registeredTypeIdentifiers: [AnyObject] { get }
Objective C
@property(copy, readonly, nonatomic) NSArray *registeredTypeIdentifiers
Обсуждение
Это свойство содержит только идентификаторы типов, зарегистрированные в провайдере элемента, и может не отразить все поддерживаемые типы приведения. Чтобы определить, может ли провайдер элемента предоставить данные определенного типа, используйте
hasItemConformingToTypeIdentifier:
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает булево значение, указывающее, имеет ли провайдер элемента данные данного типа.
Объявление
Swift
func hasItemConformingToTypeIdentifier(_
typeIdentifier
: String) -> BoolObjective C
- (BOOL)hasItemConformingToTypeIdentifier:(NSString *)
typeIdentifier
Параметры
typeIdentifier
Строка, представляющая желаемый UTI.
Возвращаемое значение
YES
true
если провайдер элемента имеет данные указанного типа или может принудить его к тому типу. ВозвратыNO
false
если провайдер элемента не может принудить данные к указанному типу.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
loadItemForTypeIdentifier (_: options:completionHandler:) - loadItemForTypeIdentifier:options:completionHandler:
Загружает данные элемента и принуждает его (по мере необходимости) к указанному типу.
Объявление
Swift
func loadItemForTypeIdentifier(_
typeIdentifier
: String, optionsoptions
: [NSObject : AnyObject]?, completionHandlercompletionHandler
: NSItemProviderCompletionHandler?)Objective C
- (void)loadItemForTypeIdentifier:(NSString *)
typeIdentifier
options:(NSDictionary *)options
completionHandler:(NSItemProviderCompletionHandler)completionHandler
Параметры
typeIdentifier
Строка, представляющая желаемый UTI.
options
Словарь ключей и значений, предоставляющих информацию об элементе, таком как размер изображения. (См.
NSItemProviderPreferredImageSizeKey
для ключа можно использовать.)completionHandler
Обработчик завершения блокирует для выполнения с результатами. Для получения информации о формате этого блока посмотрите
NSItemProviderCompletionHandler
.Обсуждение
Вызовите этот метод, когда Вы захотите получить данные провайдера элемента. Если объект провайдера элемента в состоянии предоставить данные в требуемом типе, это делает так и асинхронно выполняет Ваш
completionHandler
блок с результатами. Блок может быть выполнен на фоновом потоке.Информация о типе для первого параметра Вашего
completionHandler
блок должен быть установлен в класс ожидаемого типа. Например, запрашивая текстовые данные, Вы могли бы установить тип первого параметра кNSString
илиNSAttributedString
. Провайдер элемента может выполнить простые преобразования типов данных к классу, от которого Вы указываете, такой какNSURL
кNSData
илиNSFileWrapper
, или отNSData
кUIImage
(в iOS) илиNSImage
(в OS X). Если данные не могли бы быть получены или принуждены к указанному классу, ошибка передается блоку завершения.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
loadPreviewImageWithOptions (_: completionHandler:) - loadPreviewImageWithOptions:completionHandler:
Загружает изображение предварительного просмотра для указанного элемента.
Объявление
Swift
func loadPreviewImageWithOptions(_
options
: [NSObject : AnyObject]!, completionHandlercompletionHandler
: NSItemProviderCompletionHandler!)Objective C
- (void)loadPreviewImageWithOptions:(NSDictionary *)
options
completionHandler:(NSItemProviderCompletionHandler)completionHandler
Параметры
options
Словарь ключей и значений, предоставляющих информацию об элементе, таком как размер изображения. Для списка возможных ключей посмотрите
Options Dictionary Key
.completionHandler
Обработчик завершения блокирует для выполнения с результатами. Первый параметр этого блока должен быть параметром типа
NSData
,NSURL
,UIImage
(в iOS), илиNSImage
(в OS X) для получения данных изображения. Для получения дополнительной информации о реализации блока, посмотритеNSItemProviderCompletionHandler
.Обсуждение
Вызовите этот метод для выборки изображения предварительного просмотра для данных провайдера элемента. Провайдер элемента генерирует это изображение с помощью обработчика, указанного в
previewImageHandler
свойство или использование обработчика Беглого взгляда, если Вы доступны.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
previewImageHandler
СвойствоПользовательский предварительный просмотр отображает блок обработчика для использования с этим провайдером элемента.
Объявление
Swift
var previewImageHandler: NSItemProviderLoadHandler?
Objective C
@property(copy, nonatomic) NSItemProviderLoadHandler previewImageHandler
Обсуждение
Используйте это свойство для указания блока, способного к генерации изображения предварительного просмотра для данных провайдера элемента. Ваша кладка блоков изображения предварительного просмотра похожим способом к блокам, которые Вы регистрируете в методе FOO, за исключением того, что он всегда генерирует изображение. При генерации изображения, быть подготовленным возвратить его с помощью
NSData
,NSURL
,UIImage
(в iOS), илиNSImage
(в OS X) объект.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
Типы данных
-
Блок, получающий данные провайдера элемента.
Объявление
Swift
typealias NSItemProviderCompletionHandler = (NSSecureCoding!, NSError!) -> Void
Objective C
typedef void (^NSItemProviderCompletionHandler)(id <NSSecureCoding> item, NSError *error);
Обсуждение
Используйте этот блок для получения данных от вызова до
loadItemForTypeIdentifier:options:completionHandler:
метод. Этот блок берет следующие параметры:item
Элемент, который будет загружен. При указании блока набор тип этого параметра к определенному типу данных Вы хотите. Например, запрашивая текстовые данные, Вы могли бы установить тип в
NSString
илиNSAttributedString
. Провайдер элемента пытается принудить данные к классу, который Вы указываете.error
Указатель на ошибку возражает для получения информации о любых проблемах, произошедших при загрузке данных.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
Блок, загружающий данные провайдера элемента и принуждающий их к указанному типу.
Объявление
Swift
typealias NSItemProviderLoadHandler = (NSItemProviderCompletionHandler!, AnyClass!, [NSObject : AnyObject]!) -> Void
Objective C
typedef void (^NSItemProviderLoadHandler)(NSItemProviderCompletionHandler completionHandler, Class expectedValueClass, NSDictionary *options);
Обсуждение
Используйте этот блок при регистрации специфичного для типа обработчика приведения в
registerItemForTypeIdentifier:loadHandler:
метод. Параметры для этого блока следующие:completionHandler
Обработчик завершения для вызова с получающимися данными. Для получения информации об этом блоке посмотрите
NSItemProviderCompletionHandler
.expectedValueClass
Ожидаемый класс загружаемого элемента. Преобразуйте данные провайдера элемента в этот тип и передайте полученный объект как первый параметр
completionHandler
блок.options
Словарь с опциями для того, как обеспечить требуемый элемент. Например, словарь может содержать пиксельные размерности требуемого изображения. Для получения информации о поддерживаемых ключах посмотрите
Options Dictionary Key
.Когда клиент вызывает
loadItemForTypeIdentifier:options:completionHandler:
метод и запросы надлежащий тип, провайдер элемента выполняет Ваш блок. В Вашей реализации создайте объект ожидаемого типа и выполните блок вcompletionHandler
параметр, передавая недавно созданный объект как первый параметр того блока. Если существует ошибка, передачаnil
для объекта и обеспечивают надлежащееNSError
объект, объясняющий, что произошло.Этот тип блока также используется для генерации изображений предварительного просмотра. В случае изображения предварительного просмотра,
expectedValueClass
всегда aNSData
,NSURL
,UIImage
(в iOS), илиNSImage
(в OS X) класс.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
Ключи, указывающие опции использовать при генерации данных провайдера элемента.
Объявление
Swift
let NSItemProviderPreferredImageSizeKey: String
Objective C
NSString * const NSItemProviderPreferredImageSizeKey;
Константы
-
NSItemProviderPreferredImageSizeKey
Ключ, указывающий размерности изображения в пикселях. Значение этого ключа
NSValue
объект, содержащий aCGSize
илиNSSize
тип данных.Доступный в iOS 8.0 и позже.
Обсуждение
Ключи используются в словаре, переданном
options
параметр aNSItemProviderLoadHandler
блок. -
-
Ключи, используемые в элементах списка свойств, полученных из или отправленный в код JavaScript.
Объявление
Swift
let NSExtensionJavaScriptPreprocessingResultsKey: String let NSExtensionJavaScriptFinalizeArgumentKey: String
Objective C
NSString * const NSExtensionJavaScriptPreprocessingResultsKey; NSString * const NSExtensionJavaScriptFinalizeArgumentKey;
Константы
-
NSExtensionJavaScriptPreprocessingResultsKey
Ключ, значение которого является элементом типа
kUTTypePropertyList
. Элемент содержитNSDictionary
это содержит объект, возвращенный кодом JavaScript к его функции завершения.Доступный в iOS 8.0 и позже.
-
NSExtensionJavaScriptFinalizeArgumentKey
Ключ, значение которого является элементом типа
kUTTypePropertyList
. Элемент содержитNSDictionary
это содержит параметры, которые будут переданы JavaScript, завершают метод.Доступный в iOS 8.0 и позже.
-