我正在创建一个Pod,以便简化任何新应用程序的所有MVVM设置,但是我遇到了通用类型的麻烦。
我创建了一个称为代表器的类,该类的功能是将Cell类型注册到UITableView并期望一种特定类型的数据,例如:
class MRKTVRepresenter<C,D> : NSObject, MRKTVRepresenterProtocol where C : UITableViewCell , D : Any {
public private(set) var representType = C.self
public func registerRepresenter(_ tv: UITableView) {
tv.registerClassNib(representType)
}
public func rehuseCellFor(tv:UITableView, at index:IndexPath, with data:D )->C{
let cell = tv.dequeueReusableCell(representType, for: index)
return representCellFor(tv: tv, at: index, in: cell, with: data)
}
}
那么当我在TableView数据源中时,我想要一个代表数组,例如:
open class MRKTVDatasource: NSObject, UITableViewDataSource {
public var representers : [MRKTVRepresenter] {
return []
}
}
但是,当我这样做时,它告诉我必须指定其类型,并且如果我指定期望的类型为UITableViewCell类型,即使Representer使用其他类型,即使它从UITableViewCell扩展,也会引发错误。
我该如何解决?
非常感谢您!