首页 > 解决方案 > 如何获取 coreData 属性并通过 navigationLink 将其传递给另一个视图

问题描述

我想列出 coreData 对象,然后将它的属性传递给另一个视图。但是错误显示我无法获取 coreData 对象的属性,以便通过 NavigationLink 将其传递给 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)")
    }
}

标签: core-dataswiftui

解决方案


我尝试了解决它。

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")
                    }
                }
            }
        }
    }
}

推荐阅读