2012-04-20 4 views
1

ファイルは削除しないでください:NSWorkspaceRecycleOperationは、私は、ディレクトリからファイルを削除するため、このコードを使用し

[ws performFileOperation: NSWorkspaceRecycleOperation source: @"/Users/user/path" destination: @"" files: [[_l_ArrayController selectedObjects] mutableArrayValueForKey: @"LName"] tag: 0];   
[_l_ArrayController removeObjects:[_l_ArrayController selectedObjects]]; 

をし、それが完璧に働いたが、私はファインダーを経由して、時間に_l_ArrayControllerから任意のファイルを、削除した場合、NSWorkspaceRecycleOperationは削除されませんこれの後にファイルがあります。例えば

Iはファイル{一つ、二つ、三つ}のアレイを有し、削除始めます。 Finderで「2」のファイルを削除した場合、ファイル「3」はNSWorkspaceRecycleOperationで削除されません。

+0

NSWorkspaceはロックされているものを削除しないと思います。どの種類のファイルを削除しようとしていますか? –

答えて

2

非同期的に発生していることがわからない場合は、この関数の動作に驚くかもしれません。関数はすぐに終了し、プログラム内の次のステートメントに移動し、リサイクル操作はしばらくしてから実行されます。あなたがリサイクル作業の直後に取得したコードが、ファイルが消えてしまったという考えに何とかしていたら...あなたは驚いているかもしれません。この場合、NSWorkspaceに「削除するファイルの配列はここにあります」と伝えます。次に、次のステップで、それらのファイルの1つを取り出します。そして、リサイクル運転が行われます。 NSWorkspaceは「その配列を見てみましょう」と言います。いくつかのファイルを見つけ、その操作を実行します。見た目の前に違ったファイルが存在していたことは以前は分かっていませんでした。それは意味がありますか?あなたができることはいくつかあります。 1つは、配列のコピーを与え、次に元のものを変更します。または、コードをcompletionHandlerブロックに配置します。これはリサイクル操作が完了するまで実行されないことが保証されています(正常かどうか)。

関連する問題