我正在使用最新版本的RestKit访问API,并且正在拉下一些“事件”对象。
我有两个不同的API端点:
1.“所有事件”
2.“此用户的活动”
来自端点#2的事件是来自端点#1的事件的子集。
目前,我已经创建了两个不同的CoreData实体,每个端点一个。这种方法有效,但效率很低 - 这些子集中的事件都是重复的。
我想做的是使用端点#1下拉所有事件,然后使用端点#2标记与该用户相关的那些事件(来自端点#1)。
是否可以使用RKEntityMapping将任意值(flag)映射到接收的对象中 - 因此我可以在用户到达时标记用户的事件,但仍然将它们放入与事件超集相同的CoreData实体中。
或其他任何建议?
答案 0 :(得分:1)
事实上,你提出的是应该做的唯一方法。我不知道RestKit,但你可以简单地首先获取用户的事件,插入到Core Data中,然后获取所有事件并仅插入那些未包含在用户事件中的事件。如果您有两个字典或托管对象数组,则可以使用简单谓词:
NSArray *userEventIDs = [userEvents valueForKeyPath:@"idNumber"];
NSSet *newEvents = [allEvents filteredSetUsingPredicate:
[NSPredicate predicateWithFormat:@"not (idNumber in %@)", userEventIDs]];