【发布时间】:2020-03-06 23:36:29
【问题描述】:
我正在努力弄清楚如何让我的选择器显示已经存储的 CoreData 值。我希望它显示在选择器的右侧,就好像用户刚刚选择了它一样。我曾尝试在选择器之前添加self.updatedItemAttribute = self.editItem.attribute ?? "" 以设置初始值,但这并没有建立。我也尝试在@State(例如@State var updatedItemAttribute: String = self.editItem.attribute)中定义它,但这也没有建立。如果我在选择器之前添加一个TextField,它将设置值,但我不希望有一个带有值的TextField,只是为了设置它。关于如何在选择器之前将updatedItemAttribute 设置为editItem.attribute 的任何想法?谢谢。
import CoreData
import SwiftUI
struct EditItemView: View {
@Environment(\.managedObjectContext) var moc
@Environment(\.presentationMode) var presentationMode
@ObservedObject var editItem: Item
@State var updatedItemName: String = ""
@State var updatedItemAttribute: String = ""
let attributes = ["Red", "Purple", "Yellow", "Gold"]
var body: some View {
NavigationView {
Form {
Section {
TextField("Name of item", text: $updatedItemName)
.onAppear {
self.updatedItemName = self.editItem.name ?? ""
}
Picker("Test attribute", selection: self.$updatedItemAttribute) {
ForEach(attributes, id: \.self) {
Text($0)
.onAppear {
self.updatedItemAttribute = self.editItem.attribute ?? ""
}
}
}
}
...
【问题讨论】: