我希望你们对我写的所有内容发表评论,因为我想知道我是否走在正确的轨道上。所以,就在这里。
refreshObject:mergeChanges:
与 YES
作为参数。另外,我必须再次获取以检查新记录。有更好的解决方案吗? 比如我根据我的设置加载VC,到其他VC,修改设置保存。现在,当我回来时,我想在 viewWillAppear: 中根据设置中所做的更改来获取更改和更改 GUI。但是,问题是当我获取设置时,我得到相同的数据,我认为是因为缓存?但是在这种情况下,父上下文有什么意义呢? 最佳答案
所以我不是 CoreData 专家,但我会尝试解决每一个问题。您应该阅读这篇精彩的 article在核心数据上,即让其传播更改的父子上下文。
1)我认为在进行过程中保存上下文是一种常见的做法 - 您想要更改一个 VC 上的数据、转到下一个、更改更多数据并保存它的用例是什么,但忽略前一个 VC 上的数据?如果您打算简单地放弃更改,那么 [managedObjectContext rollback]
应该是您要求取消以重置上下文状态的方法。
2)我假设您已按照文章中的描述将您的 VC 设置为父子层次结构 - 如果是这样,请确保您保存了子节点和父节点的上下文。子进程将更改推送到父进程,然后保存父进程实际上将更改保存在 coredata 中。在 viewWillAppear 上,当您轮询 CoreData 时,应该会出现更改。
3)请参阅上面链接的很棒的文章以保存子上下文和父上下文:)
4)我不必为了释放内存而重置上下文。一般来说,从我所看到的情况来看,人们确实使用了在 appload 上实例化的单例(然后是父子在后台更新数据)。 SO 中的一位大人物可能可以更好地描述内存发生的情况,但如果您真的担心,您可以在 ViewDidDisappear
上取消 VC 的指向单例的上下文指针。 ,然后在 viewWillAppear
上重新实例化它重新加载对象。
关于ios - 核心数据 - 管理上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430901/