【问题标题】:CoreData & RestKit - Fetching same entity type from multiple sourcesCoreData & RestKit - 从多个来源获取相同的实体类型
【发布时间】:2013-12-05 08:27:09
【问题描述】:

我正在使用最新版本的 RestKit 访问 API,并且正在拉下一些“事件”对象。

我有两个不同的 API 端点:
1.“所有事件”
2.“该用户的事件”

来自端点 #2 的事件是来自端点 #1 的事件的子集。

目前,我创建了两个不同的 CoreData 实体,每个端点一个。这可行,但效率低下 - 子集中的那些事件存在重复。

我想做的是使用端点 #1 来下拉所有事件,然后使用端点 #2 标记与该用户相关的那些事件(来自端点 #1)。

是否可以使用 RKEntityMapping 将任意值(标志)映射到接收到的对象 - 因此我可以在用户事件到达时对其进行标记,但仍将它们作为事件的超集放入相同的 CoreData 实体中。

或者有什么其他建议?

【问题讨论】:

    标签: ios cocoa core-data restkit restkit-0.20


    【解决方案1】:

    事实上,您提出的唯一方法就是这样做。我不了解 RestKit,但您可以简单地首先获取用户的事件,插入 Core Data,然后获取所有事件并仅插入用户事件中未包含的事件。如果你有两个字典数组或托管对象,一个简单的谓词就可以了:

    NSArray *userEventIDs = [userEvents valueForKeyPath:@"idNumber"];
    NSSet *newEvents = [allEvents filteredSetUsingPredicate:
      [NSPredicate predicateWithFormat:@"not (idNumber in %@)", userEventIDs]];
    

    【讨论】:

    • 那么,我应该如何在收到用户事件时对其进行标记?如果没有这个,按照你的提议,我不会仍然会得到一整套所有事件,而无法识别与用户相关的事件。
    • 您说您正在使用 Core Data。当然,您的对象模型将包括从用户到事件的一对多关系。对吗?
    • 你当然是完全正确的!我想我只是被 RestKit 的明显简单性和模仿远程数据结构蒙蔽了双眼,而我应该自己在本地数据库(或 CoreData)中创建关系。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多