Я хочу создать массив классов Generic, но он заставляет мой указывать его тип - PullRequest
0 голосов
/ 01 сентября 2018

Я создаю модуль для упрощения всех настроек 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 .

Как я мог решить это?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...