Core Data - 过滤实体及其关系字段

Core Data - filter entity and its relationship field

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

这是 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. 晚上

我希望能够获取特定类型新闻的所有日期,并在这些天过滤 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="evening" 进行过滤,我想获取 Day1 和 Day3,并且在该字段中,daynews 只有 News2 表示 Day1,News6 表示 Day3

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

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

显示当天的新闻时,使用

day.daynews.filteredSetUsingPredicate(filter)

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