我正在尝试使用environmentObject
在 watchOS6 应用程序中将我的数据模型绑定到我的视图。
我在 Xcode 11 中创建了一个简单的独立 Watch 应用程序。
我创建了一个新的DataModel
class
import Combine
import Foundation
import SwiftUI
final class DataModel: BindableObject {
let didChange = PassthroughSubject<DataModel,Never>()
var aString: String = "" {
didSet {
didChange.send(self)
}
}
}
In my ContentView
struct 我使用绑定这个类@EnvironmentObject
-
struct ContentView : View {
@EnvironmentObject private var dataModel: DataModel
var body: some View {
Text($dataModel.aString.value)
}
}
最后,我尝试注入一个实例DataModel
进入到环境中的HostingController
class -
class HostingController : WKHostingController<ContentView> {
override var body: ContentView {
return ContentView().environmentObject(DataModel())
}
}
但是,我收到错误:
Cannot convert return expression of type '_ModifiedContent<ContentView, _EnvironmentKeyWritingModifier<DataModel?>>' to return type 'ContentView'
该错误是因为WKHostingController
是一个需要具体类型的泛型 -WKHostingController<ContentView>
在这种情况下。
类似的方法完美地适用于UIHostingController
在 iOS 应用程序中,因为UIHostingController
不是泛型类。
还有其他方法可以将环境注入到 watchOS 视图中吗?