0
假设我有两个实体:课堂和学生。课堂与学生有多对多的关系。每个学生都有一车(hascar为1)或没有(hascar为0)有关核心数据获取属性的两个基本问题
我想创建课堂几个牵强的属性:
- 许多有车的学生
- 学生人数
什么让我绊倒是语法。我如何创建一个谓词来检查特定教室中的所有学生?
谢谢!
假设我有两个实体:课堂和学生。课堂与学生有多对多的关系。每个学生都有一车(hascar为1)或没有(hascar为0)有关核心数据获取属性的两个基本问题
我想创建课堂几个牵强的属性:
什么让我绊倒是语法。我如何创建一个谓词来检查特定教室中的所有学生?
谢谢!
您不需要提取或提取的属性来检查与特定教室相关的所有学生,因为这种关系会自动找到学生。
ClassRoom{
roomNumber:number
teacher:string
students<-->>Student.classroom
}
Student{
name:string
classroom<<-->ClassRoom.students.
}
假设您有一个特定的ClassRoom对象aClassRoom。关键aClassRoom.students返回所有相关Student对象的NSSet。所有你需要做的就是使用收集操作符来获取你想要的信息。
的学生人数将是简单:
NSNumber *studentCount=[aClassRoom.students valueForKeyPath:@"@count"];
学生与汽车数量:
NSPredicate *p=[NSPredicate predicateWithFormat:@"hasCar==1"];
NSNumber *withCars=[[aClassRoom.students filteredSetUsingPredicate:p] valueForKeyPath:@"@count"];
如果你有关系,你永远不要需要获取找到的东西关于那种关系中的对象。
太棒了。我正在分析这种情况。这正是我需要的。谢谢。 – Chris 2011-04-13 00:37:38
作为一个后续,如果我想在NSPredicate中使用它们来过滤fetchedresultscontroller的结果呢?例如,我可能想要筛选结果并仅显示不是所有学生都有车的教室。 – Chris 2011-04-15 21:14:41
@Chris - 你想要的谓词可能会在学生关系中使用“ANY”操作符。例如:“ANY students.hasCar == 0”将返回所有Classroom对象,其中至少有一名学生没有汽车。 – TechZen 2011-04-18 18:12:05