2012-06-17 30 views
2

离线时间后的局部变化,我使用Restkit进行在线/离线iOS应用程序,但我不知道离线时间后进行同步。如何管理与Restkit

我在想的是:

  • 离线,我更新本地管理的对象,我推场local_changes为true
  • 当我上网回来,之前每个GET请求,我把所有车型使用PUT请求
  • 如果它是一个新的项目local_changes =真,我发送POST请求。

我的问题是,我的GET请求,不等待GET请求发送结束,所以我得到旧数据(数据未修改)。

你怎么看这件事?你有没有找到一个更好的方法来做到这一点?

回答

2

我意识到这是晚了,但我最近一直在寻找一个好办法做到这一点。

我目前使用从名为setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))blockAFHTTPClient类的方法。在我设置Restkit objectManager的AppDelegate中,我在AFHTTPClient对象上运行此方法。在该方法中,我有一个if语句来检查网络可达性。如果无法访问,我将当前日期保存在我的AppDelegate中。如果它可以到达,并且self.offline!= nil,那么你知道你刚刚回来了。

此时,您应该能够检查实体上的'updatedAt'字段(使用NSPredicates)以查看它们是否在上次离线后更新或创建。然后你可以相应地PUT/POST。

+1

你好,我接受你的答案。我做了几乎相同的事情,但采取了其他方式。每次我想要求我的API时,我都会检查是否有互联网。如果不是,我将to_sync设置为TRUE,稍后,我将使用to_sync = FALSE获取所有模型,然后再次发送请求。 – Sebastien