создание обобщенного протокола c в Swift - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь сделать обобщенный протокол c, чтобы я мог чередовать тип протокола в зависимости от контроллера. Вот что я имею в виду, и я сделал.

Ниже представлен ViewController, который обрабатывает тип модели, и Presenter, который является протоколом.

class ModelVC<T: Codable, P: BaseProtocol.Presenter>: ViewController {
    var refreshControl: UIRefreshControl!
    var results = [T]()

    var presenter: P!

    override func viewDidLoad() {
        super.viewDidLoad()

        presenter.error ....

    }
}

Когда я расширяю ModelVC

class LoanHistoryVC: ModelVC<LoansModel, LoanHistoryProtocol.Presenter> {

    override func viewDidLoad() {
        super.viewDidLoad()

        presenter = LoanHistoryPresenter(view: self, source: NetworkAdapter.instance, loading: loading, error: errorTracker)
        presenter.start()
    }
}

код выше, я получаю Generic parameter 'T' could not be inferred error

Вот мой Base Protocol

struct BaseProtocol {
    typealias Presenter = BasePresenter
}

protocol BasePresenter: class {
    var loading: ActivityIndicator { get }
    var error: ErrorTracker { get }
    func start()
    func stop()
}

История кредита записывается как

struct LoanHistoryProtocol {
    typealias Presenter = _LoanHistoryPresenter
}

protocol _LoanHistoryPresenter: BasePresenter {
    .....
}

struct LoansModel: Codable {
    var id: Int?
}

Так что теперь это дает ошибку, о которой я упоминал: как у меня есть общий c протокол, чтобы я мог легко добавить любой по мере необходимости.

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