【发布时间】:2012-02-19 10:27:12
【问题描述】:
我正在为我正在开发的 iPad 应用程序设置基本同步服务。目标是在 iPad 应用程序的多个实例中保持数据一致,并在网络上拥有数据的只读版本,从而推出自定义解决方案。
目前的流程是这样的:
- 每个实体都有一个“created”、“modified”和“UUID”字段,这些字段由 Core Data 自动更新
- 在同步时,在最后一个同步日期之后创建或修改日期的每个实体都被序列化为 JSON 并发送到服务器
- 服务器使用客户端生成的 UUID 作为 PK 将任何更改持久保存到 MySQL 数据库(如果存在冲突,它只使用最近修改的实体作为“真实”版本,没有什么特别的)并发回任何更新的实体给客户
- 然后客户端将这些更改合并回其核心数据数据库
这一切似乎都运行良好。我的问题是如何使用此方法跟踪已删除的对象?我猜我可以为每个实体添加一个“已删除”标志,并在客户端删除某些内容时设置它,然后我可以将该更改与其余同步数据一起推送到服务器。同步完成后,客户端实际上可以删除这些实体。我的问题是:
- 我可以覆盖 Core Data 的删除方法来自动设置这个标志吗?
- 这是否需要将所有已删除的实体无限期地保留在服务器上?我们无法知道每个客户端何时同步并实际删除了每个实体(我目前没有跟踪客户端实例)
- 有更好的方法吗?
【问题讨论】:
标签: iphone mysql ios ipad core-data