#swiftui #observableobject #environmentobject
#swiftui #observableobject #environmentobject
Вопрос:
С Xcode 11.6 (11E708), SwiftUI, для приложения macOS, у меня есть данные, сгенерированные в ContentView.swift
. Но я не могу использовать эти данные внутри AppDelegate.swift
:
Сборка прошла успешно, но print(contentView.order.item)
(пожалуйста, смотрите ниже) выдает это сообщение:
Поток 1: неустранимая ошибка: не найден ObservableObject типа Order. View.environmentObject(_:) для упорядочения может отсутствовать как предок этого представления.
Чего я не понимаю?
В contentView.swift:
import SwiftUI
public class Order: ObservableObject {
@Published var item = "Hello"
}
...
@EnvironmentObject var order: Order
...
В AppDelegate.swift:
func applicationDidFinishLaunching(_ aNotification: Notification) {
...
let contentView = ContentView()
print(contentView.order.item)
...
Ответ №1:
Вам нужно внедрить Order
в среду, если она будет использоваться в качестве @EnvironmentObject
:
let order = Order() // declare it once
let contentView = ContentView().environmentObject(order) // inject to the environment