ios - 保存核心数据和保存后台数据库,哪个先做?

标签 ios http core-data request alamofire

我是 ios 开发人员(或一般的移动客户端开发人员)的新手。我有后端数据库,每次从客户端更新我的模型时都需要更新它。我还将数据保存在核心数据中以供离线/缓存。

我想知道在更新核心数据和后端数据方面,您能否指导我了解最佳实践。现在我所做的是使用 Alamofire 发送 http 请求,然后在成功回调中更新核心数据,然后客户端重新加载核心数据以显示更新已完成。但这似乎效率不高,因为我必须等到请求完成。另一方面,如果我在向用户显示结果后继续更新核心数据并在后台更新后端数据,请求可能会失败......

最佳答案

在每个对象上存储一个 lastChanged 和一个 lastSynchronised 日期。每当您对同步对象进行更改时,lastChanged 都会更新。 lastSynchronised 根据服务器的成功响应进行更新。

现在,当您进行更改时,您知道它是否已同步,因此它是变脏还是对已经脏的对象的另一次更新。

当你有互联网连接时,你可以找到所有脏对象并尝试同步它们。

唯一的复杂性是在同步过程中应用更新。你需要注意你没有一个应该是脏的但被标记为同步的对象。这可以通过在同步期间“锁定”对象来完成,也可以通过将服务器响应与成功时的对象进行比较以验证匹配来完成。

关于ios - 保存核心数据和保存后台数据库,哪个先做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685808/

相关文章:

http - 在 URL 路径中必须同等对待 '@' 和 '%40' 吗?

javascript - 除非使用alert(),否则AJAX请求不起作用

ios - SWIFT CoreData NSManagedObject

swift - 如何根据多关系集是否包含特定值使用 NSPredicate 进行过滤

ios - 是否可以通过核心数据以编程方式更改表

ios - ReloadData 不适用于 Swift 和 Alamofire

ios - Stackview 轴更改被延迟

ios - iPhone:如何使用 Xcode 向 Web 服务发送 HTTP 请求

HTTP 请求和 TCP 连接

ios - boundingRectWithSize :options:attributes:context: is not returning accurate expected UILabel size