我认为这是一种非常常见的情况,但由于我是 iOS 编程的新手,我不确定最佳的编码方式。
概要:
我在服务器上有数据,iPhone 应用程序可以通过 REST 服务检索这些数据。在服务器端,数据是具有外键(整数 id 号)的对象。
我将通过 REST 检索到的数据存储在 Core Data 中。托管对象具有“objId”属性,以便我可以在其余代码中唯一标识托管对象。
我的应用程序必须始终反映服务器数据。
在向服务器发出的后续请求中:
有些对象可能不会返回,它们已在服务器上被删除——在这种情况下,我需要从 Core Data 中删除相应的对象——这样我才能正确反映服务器的状态。
一些对象的属性发生了变化,因此相应的托管对象需要用新数据进行更新。
我的解决方案 - 并向您提问
为了在我的应用程序中运行,我做了最简单的解决方案,删除 Core Data 中的所有对象,然后添加所有新对象,使用最新的服务器端数据创建。
我不认为这是处理它的最佳方法:) 随着我的应用程序的进展,我现在想将我的 tableview 与 NSFetchedResultsController 链接起来,并且已经意识到我删除所有内容并重新添加的方法是行不通的工作了。
将 Core Data 与服务器端数据同步的可靠方法是什么?
我是否需要为从服务器返回的每个对象 ID 发出获取请求,然后用新数据更新对象?
然后遍历核心数据中的所有对象,看看哪些没有更新,然后删除那些?
这是最好的方法吗?对 Core Data 中的每个对象进行 fetch 似乎有点贵,仅此而已。
伪代码适用于任何答案:)
提前致谢!