私はかなり快適な CoreData ユーザーです。私は絶対に私を殺していた問題を抱えていました. 誰でもこれを説明できますか?
さて、ほとんどの「読み取り専用」データ作業を行い、単純な書き込み操作を処理するメイン MOC があります。大規模な書き込み/インポート/その他を実行しようとしているときは、バックグラウンド MOC を新しいスレッドに割り当て、重い作業をすべて実行してから保存します。保存すると、NSManagedObjectContextWillSaveNotification が起動し、次に mergeChangesFromContextDidSaveNotification: が発生し、メイン MOC のすべてに変更が反映されます。かなり標準的。
そのため、数日前に NSManagedObject サブクラスの 1 つで変更が行われました。変更は、setValue:forKey: での呼び出しでした。そのメソッドで特別な処理が行われていない場合、最初は [super setValue: forKey:] を呼び出していました。[self setPrimitationValue: forKey:] に変更されて...
保存後、mergeChangesFromContextDidSaveNotification: が呼び出されますが、メイン MOC は変更を反映しません。だから、それは少し奇妙です。ただし、アプリケーションを閉じてから再度開くと、魔法のように変更が存在します。何!?!
変更を保存する永続ストアに問題があることはわかっていますが、他のMOCには問題がありません。その後、新しい MOC が作成されて新しいローンチになると、すべてが再びシンクになります。なんで?
このトピックに関するすべての光は、たくさんの助けになります。