CoreData& RestKit - 从多个来源获取相同的实体类型

时间:2013-12-05 08:27:09

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

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

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

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

目前,我已经创建了两个不同的CoreData实体,每个端点一个。这种方法有效,但效率很低 - 这些子集中的事件都是重复的。

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

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

或其他任何建议?

1 个答案:

答案 0 :(得分:1)

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

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