在辅助线程中更新nsmanagedobject时出现“NSObjectInaccessibleException”错误

时间:2013-09-20 16:29:07

标签: ios core-data nsmanagedobject nsmanagedobjectcontext nsoperation

在我正在开发的应用程序中,我需要更新本地存储的对象以及服务器版本的这些对象所发生的任何更改。要执行更新检查,我将使用自己的NSManagedObjectContext分配一个NSOperation子类,并解析从服务器收到的所有更新,然后再将它们合并回主NSManageObjectContext。

我遇到的问题是,当我在UI中呈现NSManagedObject然后通过辅助NSManagedObjectContext更新时,应用程序崩溃了:

'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;

}

是否有从辅助NSManagedObjectContext更新当前正在使用的NSManagedObject的策略?

1 个答案:

答案 0 :(得分:0)

在您的MO上调用刷新,以便显示更改

[ctx refreshObject:object mergeChanges:mergeChanges /*YES OR NO*/];