Core Data で管理対象オブジェクトを作成するには:
NSManagedObject *aManagedObject = [NSEntityDescription
insertNewObjectForEntityForName:@"Employee"
inManagedObjectContext:aContext];
管理オブジェクトを削除するには、その管理オブジェクト コンテキストにメッセージを送信します。
[aContext deleteObject:aManagedObject];
そのメソッドはメッセージを aManagedObject に送信します
- (void)prepareForDeletion
これが私の問題です。このデータを外部データベースと同期しています。「削除済み」という名前の属性があります。オブジェクトが最初に「削除」されたときに、「削除済み」属性を YES に設定し、後で削除された外部データベースに同期したいと考えています。将来のある日、すべての「削除された」==YES エンティティは期限切れになり、実際に削除されます。
prepareForDeletion では、次のことを確認するためにテストしたいと思います。
- dateSynced >= dateModified
- dateSynced <= 有効期限
- 「削除」==はい
オブジェクトを本当に削除するか、そうでなければ:
- dateModified = 現在
- 「削除」=はい
- 削除しないようにする
この時点で削除しないようにする方法はありますか?
または、prepareForDeletion を使用して deleteObject をオーバーライドし、obsoleteObject などの新しいメソッドを作成して "deleted" = YES および dateModified=Now を設定し、後で削除するためにのみ deleteObject を使用するべきではありませんか?