使用魔法记录

时间:2015-06-25 16:06:16

标签: core-data entity relationship fetch record

我正在维护一个已经使用魔法记录(https://github.com/magicalpanda/MagicalRecord/wiki)作为核心数据桥接的项目,我想写一个获取函数,但不知道如何。以下是要求:

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

事件实体具有“类型”属性:Entity.type可能等于“sport”,“leisure”等。事件实体也具有“日期”值。

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

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

但是我怎么能用Magical Record做到这一点?

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

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

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

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案。这可以简单地完成如下:

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

(一个人有一系列事件)