2016-11-03 4 views
1
protocol BasePresenterProtocol : class {} 
protocol DashboardPresenterProtocol : BasePresenterProtocol {} 

final class DashboardPresenter { 
    weak var view: DashboardPresenterProtocol? 

    init() { 
     self.view = DashboardViewController() 
    } 

    func test() { 
     print("Hello") 
    } 
} 

extension DashboardPresenter: DashboardViewProtocol { } 

protocol BaseViewProtocol : class { 
    weak var view: BasePresenterProtocol? { get set } 
} 

protocol DashboardViewProtocol : BaseViewProtocol { 
} 

class DashboardViewController { 
} 

extension DashboardViewController: DashboardPresenterProtocol { } 

、私はDashboardPresenterプロトコルDashboardViewProtocolに確認していませんが、私はDashboardPresenterweak var view: DashboardPresenterProtocol?を宣言した、次の行スウィフトプロトコル継承とプロトコルの適合性の問題

extension DashboardPresenter: DashboardViewProtocol { } 

でエラーが出ます。私は宣言しましたが

なぜこのエラーが発生しますか?私がこのコードで間違っていることを教えてください。

答えて

5

種類DashboardPresenterProtocol?のプロパティを持つBasePresenterProtocol?の読み書きプロパティの要件を実装することはできません。

の場合はどうなるか考えてみて、DashboardPresenterからDashboardViewProtocolのインスタンスをアップキャストしてください。 BasePresenterProtocolに準拠するものは、DashboardPresenterProtocol?のプロパティに割り当てることができます。これは違法です。このため、( - but this currently isn't supportedそれが読める専用のプロパティの要件は共変することができなければならないことは注目に値しますが)不変であることをを持って読み書きプロパティの要件については

いずれにしてもprotocols don't conform to themselvesだから、BasePresenterProtocol?に準拠するタイプとしてDashboardPresenterProtocol?も使用できません。

+0

Thanks Hamish! – Soni

+0

@ソニを助けて幸い:) – Hamish