Почему протокол ассоциированного типа не компилируется с ошибкой: не соответствует протоколу - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь скомпилировать файл Swift с соответствующим протоколом, и он не может быть скомпилирован с ошибкой

import Foundation

protocol ViewProtocol {
}

protocol PresenterProtocol {
    associatedtype ViewType: ViewProtocol

    var view: ViewType {get}
}

protocol ExampleViewProtocol: ViewProtocol { 
}

class ExamplePresenter: PresenterProtocol {
    var view: ExampleViewProtocol

    init(view: ExampleViewProtocol) {
        self.view = view
    }
}

В Xcode 10.2 и XCode 10.1 появляется ошибка:

Тип 'ExamplePresenter' не соответствуетк протоколу 'PresenterProtocol'

Я не понимаю, почему.Что нужно сделать, чтобы он скомпилировался?

1 Ответ

1 голос
/ 19 апреля 2019

Проблема в том, что ExampleViewProtocol наследуется от ViewProtocol вместо того, чтобы соответствовать ему. Чтобы компилировать ваш код, вы можете попробовать адаптировать ExampleViewProtocol, чтобы сделать его классом. Это сделает ExampleViewProtocol конкретным типом, который позволит ему соответствовать ViewProtocol.

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