使用魔法记录从核心数据中获取关系实体

Fetch relational entity from core data using magical record

我正在维护一个已经使用 magic record (https://github.com/magicalpanda/MagicalRecord/wiki) 作为 Core Data 桥接的项目,我想编写一个获取函数,但不知道如何编写。要求如下:

我有实体人物和事件。一个人可以没有或有很多事件,例如观光,踢足球......在 *.xcdatamodelId 文件中,Person 实体与 Event 实体链接(一对多关系)。在 Person 实体的属性 table 中,我没有看到与 Event 实体相关的属性(是的,Person 实体中没有 eventId)。在事件 "table" 中,也没有 personId。唯一连接 Person 和 Event 的是已经设置的 "to-many" 关系。

事件实体有一个"type"属性:Entity.type可能等于"sport"、"leisure"等。事件实体也有一个"date"值.

这就是我要获取的内容:我想获取所有至少有一个 "sport" 类型事件的所有人员,并且我还想获​​取最旧的 Entity.date。

如果是 SQLite,我会加入 Person 和 Entity table,其中 Entity.type == "sport"。如果有任何连接记录,那么我将根据 Event.date 对 table 进行排序,然后检索第一个

但是我如何使用 Magical Record 做到这一点?

已编辑:我知道如何设置谓词来搜索 Person,例如:

NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"Department IN %@", @[dept1, dept2]];
NSArray *people = [Person MR_findAllWithPredicate:peopleFilter];

但在我的情况下,Person 没有 eventId,Event 没有 personId,所以这不适用。

终于找到解决办法了。这可以像下面这样简单地完成:

 NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"ANY events.eventType contains %@",@"love"];
    NSArray *people = [Person MR_findAllWithPredicate:peopleFilter];
    return people;

(一个人有一系列事件)