在 EditView 中使用来自 CoreData 的值预填充 SwiftUI 表单
Prefilling a SwiftUI form with values from CoreData in EditView
我有一个 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")
}
}
}
"is home" 的值从 CoreData 的值正确初始化,我可以更改并保存它,没问题。
我的问题是名称属性。我收到以下错误:"Cannot convert value of type 'Binding' to expected argument type 'Binding' "
我做错了什么?
答案在这里:
https://www.hackingwithswift.com/books/ios-swiftui/creating-nsmanagedobject-subclasses
在创建我自己的 NSManagedObject 子类并删除可选的它工作后。
如果你想继续使用 CoreData 的 Class 定义的另一个答案:
https://forums.swift.org/t/promoting-binding-value-to-binding-value/31055
我有一个 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")
}
}
}
"is home" 的值从 CoreData 的值正确初始化,我可以更改并保存它,没问题。
我的问题是名称属性。我收到以下错误:"Cannot convert value of type 'Binding' to expected argument type 'Binding' "
我做错了什么?
答案在这里:
https://www.hackingwithswift.com/books/ios-swiftui/creating-nsmanagedobject-subclasses
在创建我自己的 NSManagedObject 子类并删除可选的它工作后。
如果你想继续使用 CoreData 的 Class 定义的另一个答案: https://forums.swift.org/t/promoting-binding-value-to-binding-value/31055