来自 CoreData Values 的 SwiftUI 选择器

mbp*_*p12 2 swift swiftui

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

@Environment(\.managedObjectContext) private var viewContext

@FetchRequest(
    sortDescriptors: [],
    animation: .default)
private var users: FetchedResults<Users>
Run Code Online (Sandbox Code Playgroud)

我有一个使用 ForEach 循环的选择器,并使用 Users 表中的名称填充选择器。

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

填充选择器确实有效。但是,所选值未正确保存。当我选择某些内容时,它不会显示在文本区域中,并且在调试模式下,它显示 selectedUser 变量仍然是空字符串。

我似乎不知道如何让它发挥作用。

Joa*_*son 8

将您的选择属性更改为用户并将其设为可选(因为打开视图时未选择任何内容)

@State var selectedUser: User?
Run Code Online (Sandbox Code Playgroud)

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

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

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