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 足够聪明?