NSFetchRequest - 通过关系获取所有对象

Posted

技术标签:

【中文标题】NSFetchRequest - 通过关系获取所有对象【英文标题】:NSFetchRequest - get all objects by relationship 【发布时间】:2014-04-12 08:45:57 【问题描述】:

是否可以创建一个NSFetcherRequest 或类似的东西来通过关系获取所有对象?例如,我有三个实体学生、缺席和科目。学生有属性NSSet缺席,缺席有属性学生和学科。我需要让一名学生和一门学科全部缺席。所以我需要类似的伪代码:选择所有缺席 where student=="concrete student" 和 where subject=="concrete subject"。但它不是属性,而是关系!我该怎么做?我知道,我可以让所有学生缺席,然后过滤它,但我认为它非常低效。

【问题讨论】:

【参考方案1】:

attributesrelationships 都是托管对象的 properties,并且 可以用作谓词中的关键路径,例如:

 Student *concreteStudent = ...;
 Subject *concreteSubject = ...;
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"student = %@ AND subject = %@",
     concreteStudent, concreteSubject];
 NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Absence"];
 fetchRequest.predicate = predicate;

如果“学生”和“主题”是缺席实体的一对一关系。

【讨论】:

是的:]!谢谢。我试试看。

以上是关于NSFetchRequest - 通过关系获取所有对象的主要内容,如果未能解决你的问题,请参考以下文章

NSFetchRequest 具有一对一关系属性 == YES 谓词错误地获取每个实体

排除某些对象的一对多关系上的 NSFetchRequest 无法按预期工作

CoreData 获取所有一对多关系

在 NSArray 中获取 NSFetchRequest 的所有结果

iOS Core Data NSFetchRequest groupby 关系对象

设置一对多关系后,NSFetchRequest 查询返回 nil