我希望能够传递任何符合协议的视图模型。 以下代码有效。但是,我不明白为什么,我认为在协议定义中使用尖括号语法是无效的,我仍然必须使用“any”并承担性能影响!!
import SwiftUI
struct CashItemModel {
let id: UUID
let amount: Double
}
protocol ItemListVM<ItemType> {
associatedtype ItemType
var dict: [String: [ItemType]] { get }
}
class CashListVM: ItemListVM {
var dict: [String : [CashItemModel]] = [:]
}
struct CashItemListView: View {
let viewModel: any ItemListVM<CashItemModel>
var body: some View {
List(viewModel.dict.keys.sorted(), id: \.self) { key in
Text("\(viewModel.dict[key]?.first?.amount ?? 0.0)")
}
}
}
var x = CashItemListView(viewModel: CashListVM())