【问题标题】:Proper way to sync modified objects using RestKit and CoreData使用 RestKit 和 CoreData 同步修改对象的正确方法
【发布时间】:2012-07-02 08:15:18
【问题描述】:

我需要帮助了解如何管理使用 CoreData 持久化远程对象的 iPhone 应用程序的 API。据我了解,当 iOS 应用程序获取远程对象时,它会加载资源路径中的所有对象。

对于后续请求,我希望通过让 Web 服务器仅返回自上次更新时间以来已更新的对象来减少开销。我通过返回 update_at 比请求的 last_update 时间更新的对象来执行此操作。

RestKit 然后解析修改的对象并将其映射到 CoreData。这种实现是使用 RestKit 和 CoreData 执行同步的正确方法,还是我错过了介于两者之间的层?

谢谢!

【问题讨论】:

    标签: ios web-services restkit


    【解决方案1】:

    通常 RESTful 接口应该尝试“回归基础”。在您的情况下,我建议使用 HTTP 标头 If-Modified-Since。它比传递另一个参数稍微干净一些,因为 RestKit 会在你不做任何事情的情况下处理 HTTP 状态响应。

    否则,您的方法似乎正常。服务器同步是一个巨大的问题,有很多文献和方法处理它。如果你想做更复杂的事情,那么快速的网络搜索会找到一些方法,但你的方法是我通常最终会做的。

    如果用户可以在您的应用上编辑数据,则存在同步在设备上所做的修改的问题。为此,您通常设置对象范围“已修改”标志,并且仅在对象被修改时才上传对象。

    【讨论】:

    • 感谢您的意见。 If-Modified-Since 方法是否返回所有远程对象,如果只有一两个被更新?原因是我不希望服务器返回这么多对象并导致加载时间过长。
    • 我从您的问题中假设您可以控制服务器?这意味着你必须更新它。您可以像以前一样做,但不是传递 last_update 而是读取此标头。来自the HTTP standard,“此功能的目的是允许以最少的事务开销有效地更新缓存信息。”。
    • 深入研究这一点,当从应用程序中删除远程对象时会发生什么。 iOS 应用程序如何知道该项目已被删除,我如何才能将此更改推送到设备上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2021-02-08
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多