0

在我正在开发的应用程序中,我需要使用这些对象的服务器版本发生的任何更改来更新我在本地存储的对象。为了执行更新检查,我使用自己的 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 的策略?

4

1 回答 1

0

在您的 MO 上调用 refresh 以显示更改

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