我的项目中有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
。
任何想法我做错了什么?
答案 0 :(得分:1)
没有什么'错',你只是看到2个不同的商店被保存。首先是主线程存储(非持久)然后是持久存储(备份在磁盘上)。主线程存储是持久存储的子级。
因此,在保存主线程存储时会收到通知,因为这是您要求的,但是持久存储尚未保存,因此没有任何内容保存到磁盘。
这不应该导致您的问题。如果确实如此,您的代码中会出现逻辑错误,或者您解决问题的方法不太正确。