获取 SwiftUI CoreData 关系

Posted

技术标签:

【中文标题】获取 SwiftUI CoreData 关系【英文标题】:Fetch SwiftUI CoreData relationships 【发布时间】:2019-10-20 15:38:13 【问题描述】:

我在使用新的 SwiftUI 时遇到问题。我创建了具有一对多关系(一辆车->许多日期点)的CoreData模型汽车和日期点。因此,我需要一个获取请求来收集汽车的所有日期点。我是怎么做到的?

看看我目前只收集汽车的代码。我可以修改@FetchRequest 来达到那个目的吗?

 @FetchRequest(entity: Cars.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Cars.name, ascending: true)]) var cars: FetchedResults<Cars>

【问题讨论】:

Datepoints 是 Cars 上的一个属性,其名称与模型中的关系名称相同。因此,如果关系是日期点,那么您可以通过 for car in cars print(car.datepoints) 访问它们 【参考方案1】:

您可以在数据点的 fetchRequest 中使用谓词。这是一个示例:

 @FetchRequest(
    entity: Datapoints.entity(),
    sortDescriptors: [
        NSSortDescriptor(keyPath: \Datapoints.date, ascending: true),
    ],
    predicate: NSPredicate(format: "CarsRelationship.name == %@", "Ford")
) var datapoints: FetchedResults<Datapoints>

在这里您可以找到更多关于 CoreData 和 SwiftUI 的基本信息:https://www.hackingwithswift.com/quick-start/swiftui/how-to-filter-core-data-fetch-requests-using-a-predicate

【讨论】:

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

Swiftui中CoreData关系和显示图像列表

来自先前选择器的选择器值 - CoreData/SwiftUI

使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

SwiftUI - 使用 CoreData 获取的结果来填充选取器

SwiftUI 中的 CoreData:如何清楚地获取属性?

SwiftUI 2.0列表项层级缩进显示CoreData托管数据的3种实现