【问题标题】:Core Data - filter entity and its relationship fieldCore Data - 过滤实体及其关系字段
【发布时间】:2023-03-21 17:17:01
【问题描述】:

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

这是 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 只有第 1 天的 News2 和第 3 天的 News6

【问题讨论】:

    标签: ios cocoa-touch core-data


    【解决方案1】:

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

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

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

    day.daynews.filteredSetUsingPredicate(filter)
    

    你可以在你的托管对象子类中加入一个方便的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2021-01-19
      相关资源
      最近更新 更多