我创建了一个符合JSONService的协议ObservableObject。
protocol JSONService {
var screenModel: ScreenModel? { get set }
func load(_ resourceName: String) async throws
}接下来,我创建了符合LocalService的ObservableObject,如下所示:
class LocalService: JSONService, ObservableObject {
@Published var screenModel: ScreenModel?
func load(_ resourceName: String) async throws {
// some code
}
}现在,当我在视图(SwiftUI)中创建一个属性时,我会得到一个错误:
struct ContentView: View {
@StateObject private var jsonService: any JSONService
Type 'any JSONService' cannot conform to 'ObservableObject'如何在协议中使用@StateObject?
发布于 2022-07-23 20:49:37
您只需将一致性添加到protocol。
protocol JSONService: ObservableObject, AnyObject {
var screenModel: ScreenModel? { get set }
func load(_ resourceName: String) async throws
}然后,可以将泛型添加到View中。
struct GenericOOView<JS: JSONService>: View {
@StateObject private var jsonService: JS
init(jsonService: JS){
_jsonService = StateObject(wrappedValue: jsonService)
}
var body: some View {
Text("Hello, World!")
}
}https://stackoverflow.com/questions/73093995
复制相似问题