我想创建一个通用类数组,但是它强制我指定其类型

时间:2018-09-01 08:16:45

标签: ios arrays swift class generics

我正在创建一个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扩展,也会引发错误。

我该如何解决?

非常感谢您!

0 个答案:

没有答案