我希望你们的人对我写的所有内容发表评论,因为我想知道自己是否走上正轨。所以,在这里。
refreshObject:mergeChanges:
YES
作为参数。另外,我必须再次获取以检查新记录。有更好的解决方案吗? 例如,我根据我的设置加载VC,转到其他VC,更改设置并保存。现在,当我回来时,我想在viewWillAppear中:根据设置中的更改获取更改并更改GUI。但是,问题是,当我获取设置时,我得到相同的数据,我认为是因为缓存?但是在这种情况下父母背景有什么意义呢? 答案 0 :(得分:0)
所以我不是CoreData专家,但我会尝试解决每个问题。你应该在Core Data上阅读这个伟大的article,即关于让它传播更改的Parent-Child上下文。
1)我认为通常的做法是随时保存您的上下文 - 您希望在一个VC上更改数据,转到下一个,更改更多数据并保存它的用例是什么,但忽略数据在以前?如果您只是想放弃更改,那么[managedObjectContext rollback]
应该是您取消重置上下文状态时所要求的内容。
2)我假设你已经按照文章中的描述将你的VC设置在父子层次结构中 - 如果是这样,那么确保你保存了孩子和父母的上下文。孩子将更改推送到父级,然后保存父级实际上将更改保存在coredata中。在viewWillAppear上,当您轮询CoreData时,应该存在更改。
3)请参阅上面链接的精彩文章,以保存子上下文和父上下文:)
4)为了释放内存,我没有必要重置上下文。通常从我所看到的是人们确实使用在appload上实例化的单例(然后是父子在后台更新数据)。其中一个大SO点可能更好地描述内存会发生什么,但是如果你真的担心你可以将VC的上下文指针指向ViewDidDisappear
上的单例,那么在viewWillAppear
上重新实例化它重新加载对象。