来自 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
的类型匹配
我有一个名为 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