6

アルバム写真のコア データ モデルがあります。写真エンティティには、ディスクに保存された実際の写真ファイルのパスの列があります。写真とアルバムを削除するためのベスト プラクティスは何ですか? コア デートのアイテムを削除する前に、ディスク上のファイルを手動で削除する必要がありますか? 写真のオブジェクトには簡単です。ただし、アルバムの場合、カスケード削除ルールによって写真が削除された可能性があるため、ファイルを処理するために 1 つずつループする必要があります。

私の場合のベストプラクティスは何ですか?

(他の懸念事項については、「外部ストレージを許可する」を使用しないことにしました)

4

1 に答える 1

7

Photo管理対象オブジェクトのサブクラスをオーバーライドprepareForDeletionして、そこにある写真ファイルを削除できます。

- (void)prepareForDeletion
{
    [super prepareForDeletion];
    [[NSFileManager defaultManager] removeItemAtPath:self.path error:nil];
}

次に、Photoオブジェクトを削除すると、対応するファイルが自動的に削除されます。カスケード削除ルールによってオブジェクトが削除された場合にも機能します。

更新: Xiaochao Yang が気付いたdidSaveように、特に管理対象オブジェクト コンテキストの取り消し機能を使用する場合は、オーバーライドがより良い解決策になる可能性があります。「 Core Data オブジェクトを削除するときに外部データのクリーンアップを処理する方法」に対するさまざまな回答を比較してください。

于 2013-07-21T06:21:19.320 に答える