1

NSManagedObjectContext で単一のオブジェクトを追加または削除しても問題ありませんが、NSManagedObjectContext で一度にすべてのオブジェクトをクリアする API がないのはなぜでしょうか?

変更がコミットされたときに永続ストアから削除するオブジェクトを指定します。

  • (void)deleteObject:(NSManagedObject *)オブジェクト

一度にすべてのオブジェクトを削除するための clearAllObjects などの API がないのはなぜですか?

4

2 に答える 2

2

はい、deleteObject: メソッドを使用して実行しても問題ありません。すべてのオブジェクトを削除したい場合は、管理対象オブジェクト コンテキストを破棄し、既存のストアを削除または変更して、コア データ スタックを再作成する方が速い場合があります。

于 2011-01-02T09:26:42.977 に答える
0

これは、探している結果を 1 回の呼び出しで取得する簡単な方法です。複数のfetchanddeleteリクエストが必要ですが、各エンティティ名を手動でリストする必要はありません。

extension NSManagedObjectContext {
    func clearAll() {
        persistentStoreCoordinator?.managedObjectModel.entities.compactMap({ $0.name }).forEach { entity in
            let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: entity)
            try? fetch(fetchRequest).forEach({ delete($0) })
        }
        try? save()
    }
}
于 2020-10-15T18:10:57.533 に答える