5

ファイルを削除するアプリを書いています。ボリュームがごみ箱フォルダーをサポートしている場合は、そこにファイルを移動します。それ以外の場合は、単に削除します。

私の検索モジョが私を失敗させているだけかもしれませんが、これを行う方法が見つかりません。

ここでの意図は、(疑似コード)のようなことをすることです:

if (itemURL on volume that supports Trash)
    use trashItemAtURL:resultingItemURL:error:
else
    use removeItemAtURL:error:

recycleURLs:completionHandler:は知っていますが、たとえば SMB ボリュームの場合、ファイルがすぐに削除される方法についてのダイアログが表示されます。そして、表示を更新できるように、ファイルを個別に扱いたいと思います。recycleURLs:completionHandler:を使用できると思いますが、ファイル システム イベントが SMB ボリュームで動作する場合、動作するかどうかはわかりません。

Anyhoo ..不足している API や、見つけられない推奨手法はありますか?

4

1 に答える 1

4

Apple Dev Forums の親切な人が答えを探し出しました。

10.8 Foundation リリース ノートから:

NSFileManager Trash API Mac OS 10.8 では、NSFileManager に Trash を管理する新しいメソッドが追加されました。-[NSFileManager TrashItemAtURL:resultingItemURL:error:] は、指定された URL にあるアイテムをごみ箱に移動しようとし、参照によって結果の URL を返します。この操作の一環として、システムは名前の競合を避けるためにファイルの名前を変更する場合があります。その場合、resultingItemURL にはこの新しい名前が反映されます。

[をちょきちょきと切る]

一部のボリュームは Trash フォルダーをサポートしていない可能性があるため、これらのメソッドは NO または nil を返すことによって失敗を報告し、NSFeatureUnsupportedError を含む NSError を報告します。NSFeatureUnsupportedError は NSCocoaErrorDomain の新しいエラー コードで、ファイル システムに機能がない、必要なライブラリがない、またはその他の同様の理由で機能がサポートされていないため、要求された操作の実行に失敗したことを示します。

そのドキュメントが検索に出てこなかった理由がわかりません。

于 2013-08-28T20:10:30.977 に答える