私が開発しているアプリでは、ローカルに保存したオブジェクトを、これらのオブジェクトのサーバーのバージョンで発生した変更で更新する必要があります。更新チェックを実行するには、独自の NSManagedObjectContext を持つ NSOperation サブクラスを割り当て、サーバーから受信した更新を解析してから、これらをメインの NSManageObjectContext にマージします。
私が抱えている問題は、セカンダリ NSManagedObjectContext を介して更新される UI で NSManagedObject を提示しているときに、アプリが次のようにクラッシュすることです。
'NSObjectInaccessibleException'、理由: 'CoreData は次のエラーを処理できませんでした...例外
更新が完了し、アプリが UI に NSManagedObject を表示していない場合、この問題は発生しません。
これは、NSOperation のローカル NSManagedObjectContext を作成するために使用されるメソッドです。
- (NSManagedObjectContext *) localManagedObjectContext
{
if (!_localManagedObjectContext)
{
_localManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
[_localManagedObjectContext setParentContext:[CDAServiceManager managedObjectContext]];
[_localManagedObjectContext setUndoManager:nil];
[_localManagedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
}
return _localManagedObjectContext;
}
現在使用されている NSManagedObject をセカンダリ NSManagedObjectContext から更新するための戦略はありますか?