Предварительное заполнение формы SwiftUI значениями из CoreData в EditView - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть EditView, который отправляет «Person», сохраненный в CoreData.

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 »»

Что я делаю неправильно?

1 Ответ

0 голосов
/ 23 апреля 2020

Ответ найден здесь:

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

После создания собственного подкласса NSManagedObject и удаления необязательного, он работал.

Еще один ответ, если вы хотите продолжать использовать определение класса CoreData: https://forums.swift.org/t/promoting-binding-value-to-binding-value/31055

...