0

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

我究竟做错了什么?

4

1 回答 1

0

答案在这里:

https://www.hackingwithswift.com/books/ios-swiftui/creating-nsmanagedobject-subclasses

在创建我自己的 NSManagedObject 子类并删除它工作的可选项之后。

如果您想继续使用 CoreData 的类定义,另一个答案: https ://forums.swift.org/t/promoting-binding-value-to-binding-value/31055

于 2020-04-23T13:00:54.903 回答