1

CoreData を使用して永続データと一時データの両方を管理するプログラムがあります。

ある例では、ユーザーがキャンセルを押したときにオブジェクトを削除して、一部のデータの追加を中止します。しかし、次のビューにアクセスすると、データはまだそこにあり、親のコア データ オブジェクトに関連付けられています。

    [self.bar removeFoosObject:self.foo];//Why do I need this line?
    [self.foo.managedObjectContext deleteObject:self.foo];

最終的に、子オブジェクトを親から手動で削除することでこれを解決しましたが、それはコアデータが自動的に処理するものではありませんか? なぜ最初の行が必要なのですか?

私はいくつかのテスト コードを実行しましたが、Foo は確実に削除されています。それが台無しにしていたコードを確認したところ、MOC は nil に設定されていました。メモリは存在しますが、非常に死んでいるはずです...

4

1 に答える 1

1

削除ルールの設定が間違っているため、これを手動で行う必要があります。次の Apple ドキュメントで Relationship Delete Rules を確認してください。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

または、親オブジェクトと子オブジェクトの間で関係がオプションとして設定されていない可能性もあります。

また、オブジェクトを削除した後は、データベースを保存して同期する必要があります。

于 2013-01-10T00:44:31.300 に答える