Хорошо,
так что это может быть тривиально, но я не уверен, как это сделать.
У меня есть UIViewController, который создается при вызове представления SwiftUI:
func makeUIViewController(context: Context) -> MyViewController
Вид, который делает этот вызов, получил объект среды в SceneDelegate, как мы видели в учебных пособиях:
window.rootViewController = UIHostingController(rootView: ContentView().environmentObject(MyData()))
Я пытаюсь использовать этот объект среды (MyData ()) в моей логике UIViewController. ViewController будет читать / писать на экземпляре MyData по мере необходимости, и, насколько я понимаю, это должно заставить представление SwiftUI реагировать соответствующим образом, поскольку MyData соответствует BindableObject ...
Таким образом, в вызове makeUIViewController я получаю UIViewControllerRepresentableContext. Я могу видеть окружающую среду в контексте:
context.environment
и если я распечатываю его в консоли во время отладки, я вижу это:
context.environment: [EnvironmentPropertyKey<PreferenceBridgeKey> = Value(value: Optional(SwiftUI.PreferenceBridge)), EnvironmentPropertyKey<FontKey> = Optional(SwiftUI.Font(provider: SwiftUI.(unknown context at $1c652cbec).FontBox<SwiftUI.Font.(unknown context at $1c656e2cc).TextStyleProvider>)), .......
В печати я вижу экземпляр MyData environmentObject:
EnvironmentPropertyKey<StoreKey<MyData>> = Optional(MyApp.MyData), ...
Я не уверен, как получить MyData из значений среды, переданных мне в context.environment ....
Я попытался выяснить, как получить надлежащий EnvironmentKey для MyData, чтобы я мог попытаться получить к нему доступ, просмотреть индекс ... context.environment [myKey ...]
Как я могу получить MyData из значений среды, предоставленных мне контекстом?