来自 CoreData 值的 SwiftUI 选择器

SwiftUI Picker from CoreData Values

我有一个名为 Users 的 CoreData table,其中包含用户名等内容。它已添加到我的 SwiftUI 文件中

@Environment(\.managedObjectContext) private var viewContext

@FetchRequest(
    sortDescriptors: [],
    animation: .default)
private var users: FetchedResults<Users>

我有一个使用 ForEach 循环的选择器,并使用来自用户 table 的名称填充选择器。

@State var selectedUser = ""
Picker("Select user", selection: $selectedUser) {
        ForEach(users) { user in
            Text(user.name!)
        }
    }
    .pickerStyle(.menu)
Text(selectedUser)

填充选择器确实有效。但是 selected 值没有正确保存。 当我 select 东西时,它没有出现在文本区域,在调试模式下,它显示 selectedUser 变量保持为空字符串。

我似乎不知道如何让它工作。

将您的 select 属性 更改为用户并使其成为可选的(因为打开视图时没有 selected)

@State var selectedUser: User?

然后您需要在选择器中使用 .tag,以便 selected 用户可以正确分配给 selectedUser

Picker("Select user", selection: $selectedUser) {
    ForEach(users) { user in
        Text(user.name!)
        .tag(Optional(user))
    }
}
.pickerStyle(.menu)

请注意,user 变量需要在标记中设为可选,以便其类型与 selectedUser

的类型匹配