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