我在使用关联类型的协议时遇到了问题

问题描述 投票:0回答:0

我希望能够传递任何符合协议的视图模型。 以下代码有效。但是,我不明白为什么,我认为在协议定义中使用尖括号语法是无效的,我仍然必须使用“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())
swift generics protocols
© www.soinside.com 2019 - 2024. All rights reserved.