NSItemProvider

2128 ワード

https://developer.apple.com/documentation/foundation/nsitemprovider
"An item provider for conveying data or a file between processes during drag and drop or copy/paste activities, or from a host app to an app extension."
ホストアプリケーションからアプリケーションを拡張するときに、処理フェーズ間でデータまたはファイルのドラッグアンドドロップ、コピー、貼り付け操作を渡します.
Declaration
class NSItemProvider : NSObject
Overview
iOS 11から、プロジェクトジェネレータはドラッグ&ドロップとコピー&ペーストで重要な役割を果たしています.アプリケーション拡張も同様です.NSItemProviderクラスで使用されるすべてのコンパイルブロックは、システムによって内部キューから呼び出される.ドラッグアンドドロップ操作でプロジェクトジェネレータが使用されている場合は、ホームキュー内のUI更新を確認する必要があります.
DispatchQueue.main.async {
    // work that impacts the user interface
}
App Extension Support
アプリケーション拡張NSExtensionItemattachmentsプロパティを調べると、アイテムコンフィギュレーションに遭遇します.この調査の間、hasItemConformingToTypeIdentifier(_:)の方法を使用して識別可能なデータを検索することができる.アイテムレジスタは制服タイプのソリッド火(UTI)値を用いて含むデータを確認する.loadItem(forTypeIdentifier:options:completionHandler:)メソッドを呼び出して、拡張で使用可能なデータ型を検索し、実際のデータをロードします.これらの実際のデータは、提供されるコンパイルプロセッサに渡されるデータである.
プロジェクトハンドラを作成することで、他のプロセスにデータを転送できます.既存のデータ項目の拡張を変更すると、新しいNSItemProviderが生成され、ホストアプリケーションに再送信されます.データ・アイテムを作成する場合は、データ・オブジェクトとそのタイプを具体化する必要があります.previewImageHandlerプロパティを使用して、データのプレビュー画像を作成することを選択できます.
単一のプロジェクトプローブは、1つのデータムブロックを使用して異なるフォーマットでデータを提供します.プロジェクトコンフィギュレーションを設定する場合は、registerItem(forTypeIdentifier:loadHandler:)メソッドを使用してブロックとフォーマットサポートを登録してください.クライアントが特定のフォーマットでデータを要求すると、プロジェクト・プロファイルは対応するブロックを実行し、データを適切なタイプに強制してクライアントに返します.