Instance Method インスタンスメソッド

getFileProviderServicesForItemAtURL:completionHandler:

Returns the services provided by the File Provider extension that manages the item at the given URL. 与えられたURLで項目を管理する「ファイルプロバイダ」拡張によって提供されるサービスを返します。

Declaration 宣言

- (void)getFileProviderServicesForItemAtURL:(NSURL *)url 
                          completionHandler:(void (^)(NSDictionary<NSFileProviderServiceName,NSFileProviderService *> *services, NSError *error))completionHandler;

Parameters パラメータ

url

The file URL of a document or directory. ある書類またはディレクトリのファイルURL。

completionHandler

A block that is called on an anonymous background queue. The system passes this block the following parameters: 匿名バックグラウンドキュー上で呼び出されるブロック。システムは、このブロックに以下のパラメータに渡します:

services

If the request is successful, this property contains a dictionary with zero or more NSFileProviderServiceName keys and their corresponding NSFileProviderService values; otherwise, it is set to nil. 要請がうまくいくならば、このプロパティはゼロ以上のNSFileProviderServiceNameキーとそれの対応するNSFileProviderService値を持つ辞書を含みます;そうでなければ、それはnilに設定されます。

error

If an error occurs, this property contains an object that describes the error; otherwise, it is set to nil. エラーが発生するならば、このプロパティはエラーを記述するオブジェクトを含みます;そうでなければ、それはnilに設定されます。

Discussion 議論

Use the returned services to perform custom actions defined by the services’ protocol. 返されるサービスを使って、サービスの持つプロトコルによって定義されるあつらえのアクションを実行してください。

To access the service: サービスにアクセスするには:

  1. Use the desired service’s name to get the NSFileProviderService object for the service. This object can only be used to operate on the item specified by the url parameter. 求めるサービスの持つ名前を使って、そのサービスのためのNSFileProviderServiceオブジェクトを得てください。このオブジェクトは、urlパラメータによって指定される項目に作用するためだけに使うことができます。

  2. Get the NSXPCConnection object from the service. NSXPCConnectionオブジェクトをこのサービスから得てください。

  3. Set the connection’s remoteObjectInterface property, using the service’s protocol. 接続のremoteObjectInterfaceプロパティを、サービスのプロトコルを使って設定してください。

  4. (Optional) Provide any additional configuration for the connection. (任意)何らかの追加の構成設定を接続に対して提供してください。

  5. Call resume on the connection. resumeをこの接続上で呼び出してください。

  6. Get the proxy from the connection’s remoteObjectProxy property. 接続のremoteObjectProxyプロパティからプロキシを得てください。

  7. Call the custom action methods on the proxy object. あつらえのアクションメソッドをプロキシオブジェクト上で呼び出してください。

Listing 1 shows a sample implementation. コード出力 1 はサンプル実装を示します。

Listing 1 Accessing a File Provider service’s remote proxy object. コード出力 1 ファイルプロバイダサービスのリモートプロキシオブジェクトにアクセスする。

// Get the list of services available for an item at the given URL.
FileManager.default.getFileProviderServicesForItem(at: url) { (services, error) in
    
    // Check to see if an error occurred.
    guard error == nil else {
        // Handle the error here...
        return
    }
    
    if let desiredService = services?[desiredServiceName] {
        
        // The named service is available for the item at the provided URL.
        // To use the service, get the connection object.
        desiredService.getFileProviderConnection(completionHandler: { (connectionOrNil, connectionError) in
            
            guard connectionError == nil else {
                // Handle the error here...
                return
            }
            
            guard let connection = connectionOrNil else {
                // No connection object found.
                return
            }
            
            // Set the remote interface.
            connection.remoteObjectInterface = NSXPCInterface(with: DesiredProtocol.self)
            
            // Start the connection.
            connection.resume()
            
            // Get the proxy object.
            let rawProxy = connection.remoteObjectProxyWithErrorHandler({ (errorAccessingRemoteObject) in
                // Handle the error here...
            })
            
            // Cast the proxy object to the interface's protocol.
            guard let proxy = rawProxy as? DesiredProtocol else {
                // If the interface is set up properly, this should never fail.
                fatalError("*** Unable to cast \(rawProxy) to a DesiredProtocol instance ***")
            }
            
            // You can now use the proxy to call the service's custom actions.
            
        })
    }
}

For more information, see Defining the Service’s Protocol. 詳細は、サービスのプロトコルを定義するを見てください。

See Also 参照

Accessing File Provider Services ファイルプロバイダサービスにアクセスする