RestKit saveToPersistentStore在将数据写入数据库之前调用controllerDidChangeContent

时间:2014-09-09 08:14:17

标签: core-data ios7 restkit nsfetchedresultscontroller

我的项目中有Core Data和NSFetchedResultsController的RestKit 0.23.0。我想更改实体的属性并在- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller中重新加载我的视图。

我从objectManager.managedObjectStore.mainQueueManagedObjectContext获取要更改的托管对象,更改属性并调用objectManager.managedObjectStore.mainQueueManagedObjectContext saveToPersistentStore:&error]。调用controllerDidChangeContent方法,但此时数据不会写入数据库。

NSManagedObjectContext+RKAdditions.m中调试后,我看到success = [contextToSave save:&localError];被调用了两次。第一次运行触发controllerDidChangeContent(此时数据未写入数据库),第二次调用将数据写入数据库,但不调用controllerDidChangeContent

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

没有什么'错',你只是看到2个不同的商店被保存。首先是主线程存储(非持久)然后是持久存储(备份在磁盘上)。主线程存储是持久存储的子级。

因此,在保存主线程存储时会收到通知,因为这是您要求的,但是持久存储尚未保存,因此没有任何内容保存到磁盘。

这不应该导致您的问题。如果确实如此,您的代码中会出现逻辑错误,或者您解决问题的方法不太正确。