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

coordinate(readingItemAt:options:error:byAccessor:)

Initiates a read operation on a single file or directory using the specified options. 読み出し演算をある単一のファイルまたはディレクトリ上でこの指定されたオプションを使って開始します。

Declaration 宣言

func coordinate(readingItemAt url: URL, 
        options: NSFileCoordinator.ReadingOptions = [], 
          error outError: NSErrorPointer, 
     byAccessor reader: (URL) -> Void)

Parameters パラメータ

url

A URL identifying the file or directory to read. If other objects or processes are acting on the item at the URL, the actual URL passed to the reader parameter may be different than the one in this parameter. 読み出すファイルまたはディレクトリを識別するURL。他のオブジェクトまたはプロセスがそのURLでの項目上で作用しているならば、readerパラメータに渡される実際のURLは、このパラメータにおけるものと異なるかもしれません。

options オプション

One of the reading options described in NSFileCoordinator.ReadingOptions. If you pass no options, the savePresentedItemChanges(completionHandler:) method of relevant file presenters is called before your block executes. NSFileCoordinator.ReadingOptionsにおいて記述される読み出しオプションの1つ。あなたがオプションを渡さないならば、関係するファイルプレゼンタそれらのsavePresentedItemChanges(completionHandler:)メソッドは、あなたのブロックの実行の前に呼び出されます。

outError

On input, a pointer to a pointer for an error object. If a file presenter encounters an error while preparing for this read operation, that error is returned in this parameter and the block in the reader parameter is not executed. If you cancel this operation before the reader block is executed, this parameter contains an error object on output. 入力において、エラーオブジェクトに対するポインタへのポインタ。ファイルプレゼンタがこの読み出し演算に対する準備の間にエラーと出くわすならば、そのエラーがこのパラメータにおいて返されます、そしてreaderパラメータの中のブロックは実行されません。あなたがこの演算をreaderブロックが実行される前にキャンセルするならば、このパラメータはエラーオブジェクトを出力において含みます。

reader

A Block object containing the file operations you want to perform in a coordinated manner. This block receives an NSURL object containing the URL of the item and returns no value. Always use the URL passed into the block instead of the value in the url parameter. あなたが協調流儀で実行することを望むファイル演算を含んでいるBlockオブジェクト。このブロックは、その項目のURLを含んでいるNSURLオブジェクトを受け取ります、そして値を返しません。常にブロックへと渡されるURLを使ってください、urlパラメータの中の値ではなく。

Discussion 議論

You use this method to perform read-related operations on a file or directory in a coordinated manner. This method executes synchronously, blocking the current thread until the reader block finishes executing. Before executing that block, though, the file coordinator waits until other relevant file presenter objects finish in-progress actions. Similarly, your read operation may cause pending actions for other file presenters to wait until your operations are complete. Whether or not the file coordinator waits depends on whether the item being read is a file or a directory and also depends on other related operations. あなたはこのメソッドを使って、読み出し関連演算をファイルまたはディレクトリ上で協調的流儀で実行します。このメソッドは同期的に実行します、現在のスレッドをreaderブロックが実行を終えるまでブロックします。そのブロックの実行前に、ファイルコーディネータは、他の関連ファイルプレゼンタオブジェクトが現在進行中のアクションを終えるまで待機します。同様に、あなたの読み出し演算は、他のファイルプレゼンタにとっての懸案の動作があなたの演算が完了するまで待機することを引き起こすかもしれません。ファイルコーディタが待機するかどうかは、読み出されている項目が、ファイルかディレクトリかに依存します、そしてまた他の関連演算に依存します。

  • If the url parameter specifies a file: urlパラメータがファイルを指定するならば:

    • This method waits for other writers of the exact same file to finish in-progress actions. このメソッドは、正確に同じファイルの他の書き込み手に対して現在進行中の動作を完了するまで、待機します。

    • This method waits if the file is a file package or any item inside the file package and other writers are writing to other items in the package directory. このメソッドは、ファイルがファイルパッケージまたはファイルパッケージ内の何らかの項目でありそして他の書き込み手が他の項目にそのパッケージディレクトリの中で書き込みしているならば、待機します。

    • This method does not wait for other readers of the file. このメソッドは、そのファイルの他の読み出し手に対しては、待機しません。

    • This method does not wait for writers that are manipulating the parent directory of the file, unless one of those writers specified the forDeleting or forMoving option. このメソッドは、そのファイルの親ディレクトリに手を入れている書き込み手に対しては、それらの書き込み手の1つがforDeletingまたはforMovingオプションを指定した場合を除いて、待機しません。

  • If the url parameter specifies a directory: urlパラメータがディレクトリを指定するならば:

    • This method waits if other write operations are occurring on the exact same directory. このメソッドは、他の書き込み演算が正確に同じディレクトリ上で起こっているならば、待機します。

    • This method does not wait if write operations are occurring on items inside the directory (but not on the directory itself). このメソッドは、書き込み演算がディレクトリ内の項目上で起こっている(しかしそのディレクトリ自身でない)ならば、待機しません。

    • This method does not wait for other readers of the directory. このメソッドは、そのディレクトリの他の読み出し手に対して、待機しません。

    • This method does not wait for writers that are manipulating the parent directory of the directory, unless one of those writers specified the forDeleting or forMoving option. このメソッドは、そのディレクトリの親ディレクトリに手を入れている書き込み手に対しては、それらの書き込み手の1つがforDeletingまたはforMovingオプションを指定した場合を除いて、待機しません。

When invoking these methods, declare a __block variable before the accessor block and initialize it to a value that signals failure, and then inside the accessor block set it to a value that indicates success. If the coordinated operation fails, then the accessor block never runs. The sentinel variable still holds a value that indicates failure, and the NSError out parameter contains a reference that describes the error. これらのメソッドを発動する場合、__block変数をアクセッサブロックの前に宣言してそれを失敗を合図するある値に初期化してください、それからアクセッサブロックの内部でそれを成功を指し示すある値に設定してください。協調演算が失敗するならば、そのときアクセッサブロックは決して実行されません。この見張りの変数は、依然として失敗を指し示すある値を保持します、そしてNSError outパラメータは、エラーを記述するある参照を含みます。

This method calls the relinquishPresentedItem(toReader:) method of any relevant file presenters. This method is called for file presenters in the current process and in other processes. Depending on the options you specify, other methods of the file presenters may also be called. When reading a file package directory, file presenter objects that are currently reading the contents of that file package also receive these notifications. All of the called methods must return successfully before the file coordinator executes your block. If multiple file presenters are operating on the item, the order in which those presenters are notified is undefined. このメソッドは、あらゆる関連するファイルプレゼンタそれらのrelinquishPresentedItem(toReader:)メソッドを呼び出します。このメソッドは、現在のプロセスにおいてそして他のプロセスにおいてそれらファイルプレゼンタを呼び出します。あなたが指定するオプションに依存して、それらファイルプレゼンタの他のメソッドもまた呼び出されるかもしれません。ファイルパッケージディレクトリを読み出している場合、現在そのファイルパッケージの内容を読みだしているファイルプレゼンタオブジェクトもまた、これらの通知を受け取ります。呼び出されたメソッドの全ては、ファイルコーディネータがあなたのブロックを実行する前に、うまく返らなければなりません。複数のファイルプレゼンタがその項目上で演算を行っているならば、それらプレゼンタが通知を受ける順番は未定義です。

If the device has not yet downloaded the file at the given URL, this method blocks (potentially for a long time) while the file is downloaded. If the file cannot be downloaded, this method fails. Alternatively; use a metadata query to check for the NSMetadataUbiquitousItemDownloadingStatusKey key, and then call the startDownloadingUbiquitousItem(at:) method to download the file before trying to read it. デバイスが与えられたURLでのファイルをまだダウンロードし終わっていないならば、このメソッドは、そのファイルがダウンロードされる間は、遮断します(もしかすると長い間)。ファイルがダウンロードされることができないならば、このメソッドは失敗します。代わりとして;あるメタデータクエリをNSMetadataUbiquitousItemDownloadingStatusKeyキーを調べるために使ってください、そしてそれからstartDownloadingUbiquitousItem(at:)メソッドを呼び出してそのファイルのダウンロードをそれの読み出しを試みる前に行ってください。

If you want to perform a write operation from inside a read block, use the coordinate(writingItemAt:options:writingItemAt:options:error:byAccessor:) method. あなたが書き込み演算を読み出しブロック内から実行したいならば、coordinate(writingItemAt:options:writingItemAt:options:error:byAccessor:)メソッドを使ってください。

If you want to perform a batch read operation on multiple files, use the prepare(forReadingItemsAt:options:writingItemsAt:options:error:byAccessor:) method instead. あなたがバッチ読み出し演算を複数のファイル上で実行したいならば、prepare(forReadingItemsAt:options:writingItemsAt:options:error:byAccessor:)メソッドを代わりに使ってください。

See Also 参照

Coordinating File Operations Synchronously ファイル操作を同期的に協調させる(コーディネートする)