在 EditView 中使用 CoreData 中的值预填充 SwiftUI 表单
Posted
技术标签:
【中文标题】在 EditView 中使用 CoreData 中的值预填充 SwiftUI 表单【英文标题】:Prefilling a SwiftUI form with values from CoreData in EditView 【发布时间】:2020-04-23 12:11:51 【问题描述】:我有一个 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 的值正确初始化,我可以更改并保存它,这很好。
我的问题是名称属性。我收到以下错误:“无法将 'Binding' 类型的值转换为预期的参数类型 'Binding'”
我做错了什么?
【问题讨论】:
你能分享你从 Core Data 填充的代码吗 【参考方案1】:答案在这里:
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 中的值预填充 SwiftUI 表单的主要内容,如果未能解决你的问题,请参考以下文章