Я дергаю себя за волосы, пытаясь понять, как заставить мой сборщик показать уже сохраненное значение 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 ?? ""
}
}
}
}
...