为什么associatedtype协议无法编译并出现错误:不符合协议

时间:2019-04-19 14:45:00

标签: swift

我尝试使用相关协议编译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 个答案:

答案 0 :(得分:1)

问题是ExampleViewProtocol继承自ViewProtocol,而不是遵循ExampleViewProtocol。为了使代码编译,您可以尝试改编ExampleViewProtocol使其成为一个类。这将使ViewProtocol成为一种具体类型,使其符合columnsToSplit