Значения привязки объекта Core Data - не удается найти '$ item' в области видимости - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь связать значение текстового поля с основным объектом данных и получаю сообщение об ошибке Cannot find '$draft' in scope. Я попытался переместить объявление draft из body, добавив @State let и @State var к объявлению, только для того, чтобы получить еще одну ошибку, сообщающую мне, что я не могу использовать оболочки свойств для локальных свойств.

Есть правильный способ сделать это?

struct AddItemView: View {
  @Environment(\.managedObjectContext) var moc
  @Environment (\.presentationMode) var presentationMode
              
  var body: some View {
    @State let draft = Item(context: moc)

    NavigationView {
      HStack {
        TextField("Title", text: $draft.title)
      }
    }
    .navigationTitle(Text("Add an Item"))
  }
}

1 Ответ

1 голос
/ 13 июля 2020

Хорошо, давайте немного разделим ... и все станет работать

struct AddItemView: View {
    @Environment(\.managedObjectContext) var moc
    @Environment (\.presentationMode) var presentationMode
                
    var body: some View {
        NavigationView {
            NewItemEditor(draft: Item(context: moc))
        }
        .navigationTitle(Text("Add an Item"))
    }
}

struct NewItemEditor: View {
    @ObservedObject var draft: Item
                
    var body: some View {
        HStack {
            TextField("Title", text: $draft.title)
        }
    }
}

...