我正在维护一个已经使用魔法记录(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,所以这不适用。
答案 0 :(得分:0)
最后我得到了解决方案。这可以简单地完成如下:
NSPredicate *peopleFilter = [NSPredicate predicateWithFormat:@"ANY events.eventType contains %@",@"love"];
NSArray *people = [Person MR_findAllWithPredicate:peopleFilter];
return people;
(一个人有一系列事件)