核心数据 - 过滤器实体及其关系字段

时间:2015-02-12 18:58:22

标签: ios cocoa-touch core-data

假设我有一个像这样的核心数据模型:

enter image description here

这是NSManagedObject:

class Day: NSManagedObject {

    @NSManaged var date: String
    @NSManaged var daynews: NSSet
}

class News: NSManagedObject {

    @NSManaged var content: String
    @NSManaged var type: String
    @NSManaged var day: Day
}

所以我在Day和News之间有一对多的关系:一天与一些新闻有关。每条新闻都有一个类型:

  1. 上午
  2. 晚上
  3. 我希望能够使用特定类型的新闻获取所有日期,并在这一天过滤daynews字段,使其仅包含此特定类型的新闻。 例如:

    Day1 has News1{type:"morning", content:"..."} and News2{type:"evening", content:"..."}.
    Day2 has News3{type:"morning", content:"..."} and News4{type:"morning", content:"..."}.
    Day3 has News5{type:"morning", content:"..."} and News6{type:"evening", content:"..."}.
    

    在这种情况下,如果尝试使用type =“night”进行过滤,我想获得Day1和Day3,并且在daynews中只有Day2的News2和Day3的News6

1 个答案:

答案 0 :(得分:2)

获取天数时,请在获取请求中使用此谓词:

let filter = NSPredicate(format: "ANY daynews.type = %@", "morning")
request.predicate = filter

当显示当天的新闻时,请使用

day.daynews.filteredSetUsingPredicate(filter)

您可以将一个方便的方法放入您的托管对象子类。

相关问题