我有一个EditView,被CoreData保存的 "Person "发送。
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")
}
}
}
"是家 "的值从CoreData的值中得到正确的初始化,我可以改变并保存它,它是好的。
我的问题是名字属性。我得到以下错误。"无法将'Binding'类型的值转换为预期的参数类型'Binding'"
我做错了什么?
答案在这里可以找到。
https:/www.hackingwithswift.combooksios-swiftuicreating-nsmanagedobject-subclasses
在我创建了自己的NSManagedObject子类,并去掉了可选之后,就成功了。
如果你想继续使用CoreData的Class定义,还有一个答案。https:/forums.swift.orgtpromoting-binding-value-to-binding-value-31055。