如何解决如何获取coreData属性并通过navigationLink
我想列出coreData对象,然后将其属性传递给另一个视图。但是错误显示我无法通过导航链接获取coreData对象的属性以将其传递给AnotherView。
struct StartView: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: User.entity(),sortDescriptors: []) var users: FetchedResults<User>
var body: some View {
List {
ForEach(self.users,id: \.id) { user in
NavigationLink(destination: AnotherView(userID: user.id)) { // Value of type 'NSManagedObject' has no member 'id'
Text(user.name ?? "unknown name") // Value of type 'NSManagedObject' has no member 'name'
}
}
}
}
}
struct AnotherView: View {
var userID: String
var body: some View {
Text("The userID is \(userID)")
}
}
解决方法
我尝试了一些解决方法。
struct StartView: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: User.entity(),sortDescriptors: []) var users: FetchedResults<User>
@State private var userID: String = ""
var body: some View {
List {
ForEach(self.users,id: \.id) { user in
NavigationLink(destination: AnotherView(userID: userID)) {
Button(action: {
self.userID = user.id!.uuidString
}) {
Text(user.name ?? "unknown name")
}
}
}
}
}
}
,
我建议您将“核心数据”实体直接推送到下一个视图。
更改AnotherView以接受用户实体的实例。
struct AnotherView: View {
var user: User
var body: some View {
Text("The userID is \(user.id)")
}
}
然后将User对象传递到该视图。
ForEach(self.users,id: \.id) { user in
NavigationLink(destination: AnotherView(user: user)) { // Value of type 'NSManagedObject' has no member 'id'
Text(user.name ?? "unknown name") // Value of type 'NSManagedObject' has no member 'name'
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。