我想創建一個父視圖模型,其中包含一些我希望我的所有視圖模型在 SwiftUI 中具有的基本內容。我正在嘗試使父視圖模型具有通用變數,以便我可以ParentViewModel在使用自定義型別制作的任何視圖模型中繼承。
這是我嘗試過的,但在這個案例中出現了Cannot find type 'T' in scope錯誤。loaded不太確定我如何才能做到這一點,這里有什么見解嗎?
class ParentViewModel: ObservableObject {
enum Status {
case loading
case loaded(T)
case error(Error)
}
@Published var status: Status = .loading
}
class ChildViewModel: ParentViewModel {
init() {
self.status = .loading
}
init(object: SomeObject) {
self.status = .loaded(object)
}
}
uj5u.com熱心網友回復:
當您使用泛型時,您必須在 中宣告它<>,這在您的示例中是缺失的。
這是一個有效的修改版本:
class SomeObject { }
class ParentViewModel<T>: ObservableObject { // Declare T
enum Status {
case loading
case loaded(T)
case error(Error)
}
@Published var status: Status = .loading
}
class ChildViewModel: ParentViewModel<SomeObject> { // Specify that ParentViewModel will use SomeObject as T
override init() {
self.status = .loading
}
init(object: SomeObject) {
self.status = .loaded(object)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511211.html
標籤:迅速仿制药枚举
上一篇:應根據輸入引數回傳不同型別的工廠
