Objective c 关于核心数据获取属性的两个基本问题

Objective c 关于核心数据获取属性的两个基本问题,objective-c,cocoa-touch,core-data,nspredicate,Objective C,Cocoa Touch,Core Data,Nspredicate,假设我有两个实体:教室和学生。课堂与学生有着千丝万缕的联系。每个学生都有一辆车(hascar为1)或没有(hascar为0) 我想在教室上创建两个获取的属性: 拥有汽车的学生人数 学生人数 让我困惑的是语法。如何构建一个谓词来检查特定教室中的所有学生 谢谢大家! 您不需要fetch或fetched属性来检查与特定教室相关的所有学生,因为关系会自动找到学生 ClassRoom{ roomNumber:number teacher:string students<--&

假设我有两个实体:教室和学生。课堂与学生有着千丝万缕的联系。每个学生都有一辆车(hascar为1)或没有(hascar为0)

我想在教室上创建两个获取的属性:

  • 拥有汽车的学生人数
  • 学生人数
  • 让我困惑的是语法。如何构建一个谓词来检查特定教室中的所有学生


    谢谢大家!

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

    ClassRoom{
        roomNumber:number
        teacher:string
        students<-->>Student.classroom
    }
    
    Student{
        name:string
        classroom<<-->ClassRoom.students.
    }
    
    拥有汽车的学生人数:

    NSPredicate *p=[NSPredicate predicateWithFormat:@"hasCar==1"];
    NSNumber *withCars=[[aClassRoom.students filteredSetUsingPredicate:p] valueForKeyPath:@"@count"];
    

    如果您有一个关系,您永远不需要获取来查找该关系中对象的相关信息

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

    ClassRoom{
        roomNumber:number
        teacher:string
        students<-->>Student.classroom
    }
    
    Student{
        name:string
        classroom<<-->ClassRoom.students.
    }
    
    拥有汽车的学生人数:

    NSPredicate *p=[NSPredicate predicateWithFormat:@"hasCar==1"];
    NSNumber *withCars=[[aClassRoom.students filteredSetUsingPredicate:p] valueForKeyPath:@"@count"];
    

    如果您有一个关系,您永远不需要获取来查找该关系中对象的相关信息

    太棒了。我过度分析了形势。这正是我需要的。谢谢。接下来,如果我想在NSPredicate中使用这些来过滤fetchedresultscontroller的结果,该怎么办?例如,我可能希望筛选结果,只显示并非所有学生都有车的教室。@Chris——像您希望的谓词可能会在学生关系上使用
    ANY
    运算符。类似于:
    ANY student.hasCar==0
    将返回所有教室对象,其中至少有一个学生没有车。这太棒了。我过度分析了形势。这正是我需要的。谢谢。接下来,如果我想在NSPredicate中使用这些来过滤fetchedresultscontroller的结果,该怎么办?例如,我可能希望筛选结果,只显示并非所有学生都有车的教室。@Chris——像您希望的谓词可能会在学生关系上使用
    ANY
    运算符。类似于:
    ANY student.hasCar==0
    将返回至少一个学生没有汽车的所有教室对象。