gpt4 book ai didi

xcode - 来自 Core Data 一对多集的 SwiftUI 构建列表

转载 作者:行者123 更新时间:2023-12-03 19:07:59 24 4
gpt4 key购买 nike

我正在尝试使用来自 Core Data 的数据构建 SwiftUI View 。其中一个实体有
与另一个实体的一对多关系。我有一个基本的主细节类型
一个到第二个 View 的 NavigationLink,它应该相当于一个细节 View 。我可以
实际上列出了第二个实体的所有细节,除了相关的集合
对象。
相关实体:

public class Regimen : NSManagedObject, Identifiable {
@NSManaged public var id: UUID
@NSManaged public var name: String?
//...more

@NSManaged public var drugObjects: Set<DrugObject>
}

public class DrugObject : NSManagedObject, Identifiable {
@NSManaged public var id: UUID
@NSManaged public var name: String?
//...more

@NSManaged public var regimen: Regimen
}
主要名单:
struct RegimenListView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: Regimen.getAllRegimens()) var myRegimens
var body: some View {
NavigationView {
List {
ForEach(myRegimens, id: \.self) { mr in
NavigationLink(destination: RegimenDetailView(regimen: mr)) {
Text(mr.name ?? "no regimen name")
}
}
}.navigationBarTitle("Regimens")
}
}
}
详细 list :
struct RegimenDetailView: View {
var regimen: Regimen
var body: some View {
//let da: [DrugObject] = Array(regimen.drugObjects)
return NavigationView {
VStack {
Text(regimen.name ?? "no regimen name")
List {
ForEach(regimen.drugObjects, id: \.self) { x in
Text(x.name ?? "no drugObject name")
}
}
}
}
}
}
如果我尝试按照上面列出的方式构建,我会在 ForEach 行上收到错误消息:
通用结构“ForEach”要求“Set”符合“RandomAccessCollection”
如果我第一次尝试转换为数组,它会因错误而崩溃:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[MyChems.DrugObject copyWithZone:]:无法识别的选择器发送到实例”
任何指导将不胜感激。 Xcode 11.6 iOS 13.6

最佳答案

尝试添加

extension DragObject: NSCopying {
func copy(with zone: NSZone? = nil) -> Any {
return self
}
}
并使用
List {
ForEach(Array(regimen.drugObjects), id: \.self) { x in
Text(x.name ?? "no drugObject name")
}
}

关于xcode - 来自 Core Data 一对多集的 SwiftUI 构建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63066938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com