Предварительное заполнение формы SwiftUI значениями из CoreData в EditView
У меня есть EditView, который отправляет "Человек", сохраненный CoreData.
import SwiftUI
import CoreData
struct EditPersonView: View {
@Environment(\.managedObjectContext) var moc
@Environment(\.presentationMode) var presentationMode
@ObservedObject var person: Person
var body: some View {
NavigationView {
Form {
Section {
TextField("Name", text: self.$person.name) // this does not work
Toggle(isOn: self.$person.isHome) { // this works
Text("Is home")
}
}
Section {
Button("Save") {
try? self.moc.save()
self.presentationMode.wrappedValue.dismiss()
}
.disabled(self.name.isEmpty)
Button("Cancel") {
self.presentationMode.wrappedValue.dismiss()
}
}
}
.navigationBarTitle("Edit Person")
}
}
}
Значение "is home" правильно инициализируется значением из CoreData, я могу изменить и сохранить его, и это нормально.
Моя проблема - это атрибут имени. Я получаю следующую ошибку: "Невозможно преобразовать значение типа" Binding "в ожидаемый тип аргумента" Binding ""
Что я делаю неправильно?
1 ответ
Решение
Ответ здесь:
https://www.hackingwithswift.com/books/ios-swiftui/creating-nsmanagedobject-subclasses
После создания моего собственного подкласса NSManagedObject и удаления необязательного он работал.
Другой ответ, если вы хотите продолжать использовать определение класса CoreData:https://forums.swift.org/t/promoting-binding-value-to-binding-value/31055