【发布时间】:2013-09-03 12:12:57
【问题描述】:
我在我的应用程序之上运行了一个 REST 服务,它将数据返回到我的 iPad 应用程序。这个应用程序是使用 RestKit 构建的,用于在 iPad 内外同步数据。然而,我也有一个 webapp 正在运行,它允许用户删除一些数据。
我现在遇到的当前问题是,每当用户登录 iPad 应用程序时,我都会运行查询以获取自上次登录以来最后一次修改/添加的数据。这使我可以进行更快/更短的查询。唯一的问题是,例如,如果在他最近两次登录之间从数据库中删除了一个对象,用户仍然会在他的 iPad 中看到它。
我应该采用什么策略来删除 Core Data 中的这些数据?我是否应该不从我的数据库中删除对象,而是使用一个 BOOL 表示“已删除”或没有,并且每当我通过 REST 获取 last_modified 数据时,该项目就会出现,我会将其过滤掉在 iPad 上?
我知道 RestKit 有一种删除孤立对象的方法,但由于我正在同步“last_modified”数据,我认为它不能在这里应用。
【问题讨论】:
-
响应是否包含您希望在数据库中的所有对象(应删除响应中未包含的所有对象)?
-
这就是问题所在。响应包含自用户上次登录以来添加/更新的对象。因此,例如,如果对象 1 在 Core Data 中(id==1),但自用户上次登录以来它的名称发生了变化,它将在响应中。如果它已经改变,它不会是。如果删除了,谁知道?!
-
那么服务器应该真正维护一个删除列表并用一个标志发送这些对象。
-
完美。我可能会采用相同的策略...只是有一个已删除对象的列表,带有“deletion_date”字段,每当我获取最新对象时,我都会获取“最新”删除。
-
我创建了一个需要从 CoreData 中删除的对象列表。因此,例如,我返回一个 IDS 数组,该数组对应于我需要在 CoreData 中删除的用户。我怎样才能用 RestKit 做这样的映射?!
标签: ios rest core-data restkit restkit-0.20