在EditView中用CoreData的值预填充SwiftUI表单。

问题描述 投票:0回答:1

我有一个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'"

我做错了什么?

core-data swiftui swiftui-form
1个回答
0
投票

答案在这里可以找到。

https:/www.hackingwithswift.combooksios-swiftuicreating-nsmanagedobject-subclasses

在我创建了自己的NSManagedObject子类,并去掉了可选之后,就成功了。

如果你想继续使用CoreData的Class定义,还有一个答案。https:/forums.swift.orgtpromoting-binding-value-to-binding-value-31055。

© www.soinside.com 2019 - 2024. All rights reserved.