2010-12-13 22 views
0

私はNSFileManagerを使用して、いくつかのデータをコピーしています:停止NSFileManagerプロセス

success = [manager copyItemAtPath:[dirToCopyFrom stringByAppendingPathComponent:file] toPath:[dirToCopyTo stringByAppendingPathComponent:file] error:&copyError]; 

NSFileManagerしかし、このプロセスを停止させる手段が提供されていないようです。方法はありますか?

おかげNSFileManager

答えて

4

ない、ありません。あなたは下位レベルのFSCopyObjectAsyncの機能に落とさなければなりません。

この機能の使用例については、this questionを参照してください。

コピーをキャンセルする方法については、コピーコールバックにアクセスする最初のパラメータはFSFileOperationRefです。そのパラメータを引数として渡してFSFileOperationCancel()にコピーを取り消す必要があります。 (this CocoaBuilder.com thread for more infoを参照してください)

+0

なぜ私はAppleがこれを実装していないのだろうかと思います。 – Pripyat

1

これはかなり古い質問ですが、私はまったく同じ問題があったのでそれに直面しました。 NSFileManagerはCarbonメソッドに対してNSFileManagerを使用し、手動再帰コピーを実装したいと思っていました.SSFileManagerはファイル操作のエラーを解決する良い仕事をします(例えば、ボリューム間の移動、マウントされたネットワークパスへの移動など)。 )。 NSFileManagerは、基本的にはエラーを引き起こして停止させることができます。きれいではありませんが、正しく動作します。例えば。ある場所から別の場所にディレクトリを移動するためにNSFileManagerを使用し、操作を取り消すオプションをユーザに与えました。回避策NSFileManagerの 'un-cancellability'、私はちょうどの内容がコピーされている間に宛先ディレクトリの名前を変更しました。 NSFileManagerはエラーを発生させ、コピー操作は正常に停止します。これは、ボリューム内での移動のために、OSXは名前の変更を行うだけなので、ボリュームやコピー間の移動(コピーやコピー・コピーが行われた場所)でしか動作しません。

0

前の投稿のようにファイルを移動しようとしましたが、移動によってcopyItemAtURLにエラーが返されることはありません。 Appleは同等の機能を置き換えない方法を廃止したようだ。

関連する問題