NSPredicate过滤关系

时间:2017-06-27 22:37:39

标签: ios swift core-data nspredicate

我在我的项目中使用CoreData和NSFetchedResultsController。我有两个实体学校&学生,一对多的关系......学校可以有多个学生。

我试图按学校名称过滤学校,然后按年级过滤学生,以便我获得一个过滤学校,其中只包含符合特定年级的学生。

    let fetchRequest = NSFetchRequest<School>(entityName: "School")
    let predicate = NSPredicate(format: "name = %@ AND ANY students.grade","School 2", "F")

上面提到的谓词代码的问题在于它返回了一个&#34; School 2&#34;与所有学生一起,而只有一名学生有#34; F&#34;级。

我需要一个学校实体,该实体只应包含学生&#34; F&#34;级。

1 个答案:

答案 0 :(得分:0)

您获取的学校对象将始终提供其与您获取对象的方式无关的所有值。你能做的就是过滤学生。所以你有一套school.students和第二套,只包含失败的学生。因为学生的过滤是在内存中,所以你不仅限于核心数据属性,但它也可能有点慢。