【问题标题】:RestKit and Core Data: Best PracticeRestKit 和核心数据:最佳实践
【发布时间】:2014-04-11 11:27:23
【问题描述】:

我还没有真正找到任何有关将 RestKit 与 Core Data 结合使用的最佳实践的文档。我应该在发布对象之前将它们保存到上下文中,还是只在发布成功时才保存它们?我应该如何处理发布或更新对象的错误?使您的核心数据存储与服务器上的内容保持同步的最佳方法是什么(例如,如果服务器上的某些内容被删除)?假设您因为离线而在本地创建对象,有没有一种好方法可以在您再次在线后将它们同步到服务器?如果您使用 RKObjectCache,刷新似乎甚至会删除从未发布过的本地对象。

【问题讨论】:

    标签: objective-c core-data restkit


    【解决方案1】:

    如果您创建要发布的托管对象,请设置基本属性并保存。现在这实际上是一个存根对象,RestKit 将用收到的响应填充。如果您不想要存根对象,请改为发布非托管对象。

    通过检测和处理错误来处理错误。这通常意味着使用RKErrorMessage,但这在很大程度上取决于服务器响应包含的内容...

    如果服务器上的某些内容被删除,请使用fetchRequestBlock

    您需要处理上传到服务器的新对象。维护状态标志和/或时间戳,以便您可以在重新获得网络连接时处理项目。

    RestKit 只会删除您要求它删除的对象。如果您有尚未上传的对象并且您使用 fetchRequestBlocks,则 fetch 应包含一个谓词,该谓词排除待处理的上传项目被删除。

    【讨论】:

    • 这是否意味着如果您不想要存根对象,则必须为您要发布的每个 NSManagedObject(本质上是 NSManagedObject 的副本)定义一个 NSObject?这似乎很奇怪。
    • @TylerCloutier,如果您在本地拥有所有数据,那么它并不是真正的存根。否则,基本上是的,您不能拥有未插入 MOC 的托管对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多