【问题标题】:RestKit saveToPersistentStore calls controllerDidChangeContent before data is written to the databaseRestKit saveToPersistentStore 在数据写入数据库之前调用 controllerDidChangeContent
【发布时间】:2014-09-09 08:14:17
【问题描述】:

我的项目中有带有 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

任何想法我做错了什么?

【问题讨论】:

  • 只需要再次测试,无需调用保存。谁知道 RestKit 在幕后做了什么。
  • 感谢您的回复。如果我不打电话给saveToPersistentStore,我在NSFetchedResultsController 中看不到performFetch 的变化。也许这里有问题?

标签: core-data ios7 restkit nsfetchedresultscontroller


【解决方案1】:

没有什么“错误”,您只是看到 2 个不同的商店被保存。首先是主线程存储(非持久),然后是持久存储(支持磁盘)。主线程存储是持久存储的子级。

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

这不会给您带来问题。如果是这样,您的代码中存在逻辑错误,或者您解决问题的方法不太正确。

【讨论】:

猜你喜欢
  • 2015-05-09
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2020-10-20
相关资源
最近更新 更多