RESTkit,Core Data:在将对象传输到 Core Data 之前对其进行处理

Posted

技术标签:

【中文标题】RESTkit,Core Data:在将对象传输到 Core Data 之前对其进行处理【英文标题】:RESTkit, CoreData: process object right before trasferring it to CoreData 【发布时间】:2015-01-27 14:32:03 【问题描述】:

我有问题。 我有 ios 客户端应用程序,它必须允许多个用户登录并在本地存储他们的数据。 数据与 RESTful 服务同步,最新的快照以及用户的更改应存储在本地供所有用户使用。

以前,此应用程序是使用 SQLlite 作为数据存储引擎实现的。 现在我想迁移到 CoreData。

我有什么:

服务器向我返回当前用户的实体。不发送用户 ID,因为用户授权并获取他们的会话; 我知道谁已登录并且应该存储该特定用户的所有数据。为此,我需要使用 CoreData 来为 ID=12345 的用户存储对象。

问题是:

我必须告诉 CoreData 存储与特定用户 ID 关联的特定对象。 我需要一种方法来以某种方式更改使用 RESTkit 映射的对象 - 为其设置正确的 ID 字段。

这个任务对于 SQLlite 来说是直接而简单的,但对于 CoreData 来说看起来有问题。 我还在想我对CoreData一无所知,请您帮助我进行澄清或提供有用的链接。

【问题讨论】:

你做了什么请求(路径/参数/源对象中的用户ID是否在某处)? @Wain 没有用户 ID。我们使用临时访问令牌与服务器通信(就像通常一样)。我们通过登录名在本地识别用户。 所以没有什么好办法。 Hacky,您可以将 id 作为参数添加到请求中,以便您可以再次将其映射回来(需要 RestKit 开发分支)。 Non-hacky是更新并重新保存映射结果中返回的对象。 @Wain 谢谢我们也得出了这个意见。所以我们将使用 sqlite 【参考方案1】:

没有好办法。

Hacky,您可以将 id 作为参数添加到请求中,以便再次将其映射回来(在撰写本文时需要 RestKit 开发分支)。

Non-hacky是更新并重新保存映射结果中返回的对象。

或者,您可以使用一个操作来下载 JSON,然后对其进行变异,然后运行另一个操作来映射它。

【讨论】:

谢谢。我们也最终得到了相同的解决方法。问题是所有这些都是变通方法,而不是直接的解决方案。这就是我们决定坚持使用 SQLite 的原因,因为它功能强大且提供直接的解决方案。

以上是关于RESTkit,Core Data:在将对象传输到 Core Data 之前对其进行处理的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 到 Core Data 的映射和加载零对象。 RKManagedObjectLoader

如何在 RestKit 中保存到 Core Data RKMappingResult 对象?

RestKit 0.20.1 将本地 JSON 映射到 Core Data 崩溃

RestKit / Core Data / Offline - 我需要 UUID 还是 RestKit 足够聪明?

如何将 PUT 请求添加到 RestKit + Core Data?

Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)