我有一个名为 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 变量仍然是空字符串。
我似乎不知道如何让它发挥作用。
将您的选择属性更改为用户并将其设为可选(因为打开视图时未选择任何内容)
@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
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |