1

我无法弄清楚 Restkit 是否能够下载本地不存在的对象,特别是当外键在 Core Data 中以一对一关系引用该缺失对象时。

举个例子: - 联系人 1 指的是公司 2

  • 联系人 1 存在于本地数据库中,但公司 2 不存在

  • 当用户在 UI 中检查联系人 1 的详细信息时,会执行联系人 1 的 GET

  • GET 返回一个 JSON,其中包含属性 company_id = 2 的其他联系方式

  • 我已经通过外键约定设置了 Restkit,我将外键存储在联系人对象(companyID)中,并将其链接到存储在公司对象中的远程标识符(标识符):

    [contactResponseMapping addConnectionForRelationship:@"forCustomer" connectedBy:@{@"companyID" : @"identifier"}]

在这种情况下,如果本地数据库中不存在实体(由 company_id 引用),我无法配置 restkit 来下载实体。

这可能吗?

另一种解决方法是覆盖 companyID 设置器并仔细检查实体是否存在,如果不下载实体,尽管这对我来说并不理想,因为我已经设置了一个引擎,每次编辑对象时都会收到通知并发布它到服务器。这意味着我必须阻止线程执行,直到下载链接对象。

这种机制也称为延迟加载吗?或保湿实体?我找不到任何其他类似的案例。

希望你能帮忙,对此有点疯狂。非常感谢。

PS:我正在使用restkit 0.21.0(即Blake Watters确认稳定的最新开发版本)

4

1 回答 1

1

这不是 RestKit 当前提供的功能(可能是因为您讨论的问题类型)。

对于您的解决方法,请考虑您的引擎在关系编辑方面正在做什么——它们是如何被推回服务器的?他们总是被推吗?

此外,考虑为您的“外部”对象创建存根对象,以便至少始终存在一些表示(有几种方法可以做到这一点,您可以设置映射来完成任务)。然后,当您开始使用这些对象之一时,您可以对其进行水合/延迟加载。

另请参阅澄清术语:“水合”实体:从数据库获取属性

于 2013-10-08T15:18:32.227 回答