我想创建一个通用的Datasource类,因此我希望该通用类同时符合UITableViewCell和协议ViewModel。
protocol ViewModel class {
associatedtype T
var viewModel: T { get set }
}
class TableViewDatasourceStandard<G: UITableViewCell>: NSObject, UITableViewDataSource where G: ViewModel {
let reUseIdentifier: String
init( reUseIdentifier: String, cell: G) {
self.reUseIdentifier = reUseIdentifier
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let row = indexPath.row
let cell = tableView.dequeueReusableCell(withIdentifier: reUseIdentifier, for: indexPath) as! G
cell.viewModel
return cell
}
}
我遇到了错误:
类型'G'的值没有成员'viewModel'
我尝试了一些其他方法,但是无法正常工作。谢谢!
答案 0 :(得分:1)
代替
protocol ViewModel class {
associatedtype T
var viewModel: T { get set }
}
您应该写
protocol ViewModel {
associatedtype T
var viewModel: T { get set }
}
删除class
,它将按预期工作。