Я создаю модуль для упрощения всех настроек MVVM для любого нового приложения, но у меня проблемы с общими типами.
Я создал класс под названием представитель, функция которого заключается в регистрации типа ячейки в 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, он выдаст ошибку, если Представитель использует другой тип, даже если он выходит из UITableViewCell .
Как я мог решить это?
Большое спасибо!