关于Core Data Fetched Properties的两个基本问题

时间:2011-04-12 21:14:25

标签: objective-c cocoa-touch core-data nspredicate

假设我有两个实体:课堂和学生。课堂与学生有很多关系。每个学生都有一辆车(hascar是1)或者没有(hascar是0)

我想在Classroom上创建几个获取的属性:

  1. 有车的学生人数
  2. 学生人数
  3. 绊倒我的是语法。如何构建一个检查特定教室中所有学生的谓词?

    谢谢!

1 个答案:

答案 0 :(得分:3)

您不需要获取或获取属性来检查与特定教室相关的所有学生,因为该关系会自动找到学生。

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"];

如果你有一段关系,你就不需要一个获取来找到关系中的对象。