CoreData 获取所有一对多关系

Posted

技术标签:

【中文标题】CoreData 获取所有一对多关系【英文标题】:CoreData fetching all one-to-many relationship 【发布时间】:2018-01-06 16:02:30 【问题描述】:

我有两个类,SessionCourse,会话和课程之间是一对多的关系。我正在尝试使用 NSPredicate 获取会话的所有课程。我尝试过的谓词抛出错误。

let fetchRequest: NSFetchRequest<Course> = Course.fetchRequest()

guard let startDate = session.startDate else 
   fatalError("Attempting to fetch courses for session without a start date")


let sessionPredicate = NSPredicate(format: "ALL %K == %@",
                                       #keyPath(Course.session.startDate),
                                       "\(startDate)")

fetchRequest.predicate = sessionPredicate

【问题讨论】:

【参考方案1】:

如果您想查找课程具有给定开始日期的所有课程,则更容易:

let sessionPredicate = NSPredicate(format: "session.startDate == %@", startDate)

NSManagedObject 提供完整的 KVC 支持

【讨论】:

谢谢,这行得通,但我需要将 startDate 转换为 NSDate。

以上是关于CoreData 获取所有一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 在一对多关系中编辑一个属性

获取CoreData一对多关系的索引路径?

在 coreData 中获取一对多关系并放入 tableview

获取对象时无法访问一对多CoreData关系

Core Data 获取一对多关系的数据

NSPredicate:“添加”一对多关系CoreData中所有实体的属性值