从后台管理对象上下文传播更改后,NSFetchedResultsController fetchedObjects出错

时间:2014-09-12 19:41:27

标签: ios uitableview core-data nsfetchedresultscontroller nsmanagedobjectcontext

我有NSFetchedResultsControllerNSMainQueueConcurrencyType的托管对象上下文中获取结果。我还有另一个托管对象上下文,它共享NSPersistentStoreCoordinator NSPrivateQueueConcurrencyType的{​​{1}}。

所有更改都在背景上下文中进行,并使用NSManagedObjectContextDidSaveNotification传播到主要上下文。

我在按here所述的方式获取某些更改以触发NSFetchedResultsControllerDelegate方法时遇到了一些问题,但即使解决了这个问题,我发现fetchedObjects有时会返回包含重复对象的错误数据。< / p>

我能找到的唯一解决方法是向controllerDidChangeContent添加performFetch调用:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    [self.tableView endUpdates];

    // fetchedObjects is incorrect unless I refetch here...
    [controller performFetch:nil];
}

但这对我来说似乎是一种低效的黑客攻击。每次数据发生变化时,我都会运行整个查询。我还在我的NSFetchedResultsController中禁用了所有缓存,以备记录。

0 个答案:

没有答案