【问题标题】:NSPredicate filter relationshipNSPredicate 过滤关系
【发布时间】:2017-06-27 22:37:39
【问题描述】:

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

我正在尝试按学校名称过滤学校,然后按年级过滤学生,这样我得到一个过滤学校,其中只包含与特定年级匹配的学生。

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

上面提到的谓词代码的问题是它返回给我一个“学校 2”,所有学生都有,而只有一个学生的成绩是“F”。

我需要一个只包含“F”级学生的学校实体。

【问题讨论】:

    标签: ios swift core-data nspredicate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多