0

私が開発しているアプリでは、ローカルに保存したオブジェクトを、これらのオブジェクトのサーバーのバージョンで発生した変更で更新する必要があります。更新チェックを実行するには、独自の 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 から更新するための戦略はありますか?

4

1 に答える 1

0

変更が表示されるように、MO で更新を呼び出します

[ctx refreshObject:object mergeChanges:mergeChanges /*YES OR NO*/];
于 2013-09-20T16:33:04.210 に答える