2

我正在使用 Restkit 制作一个在线/离线 ios 应用程序,但我不知道在离线时间之后进行同步。

我在想这个:

  • 在离线时,我更新本地托管对象并将字段 local_changes 推送到 true
  • 当我回到互联网时,在每个 GET 请求之前,我使用 PUT 请求发送所有带有 local_changes = true 的模型
  • 如果它是一个新项目,我会发送一个 POST 请求。

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

你觉得这怎么样?你有没有找到更好的方法来做到这一点?

4

1 回答 1

2

我意识到这已经晚了,但我最近一直在寻找一种好方法来做到这一点。

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

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

于 2014-05-07T03:18:57.047 回答