簡體   English   中英

無法轉換類型的值-使用協議初始化(Swift)

[英]Could not cast value of type - initialising with protocol (Swift)

我正在Swift(3)中為View Controller實現簡單的MVP模式。

視圖的定義類似於協議:

protocol WirelessSpeakersView {

    func present()
    func goBack()
    func alertSaveFailed()
}

我正在像這樣在ViewController中構造演示者:

class WirelessSpeakersViewController: UIViewController, WirelessSpeakersView  {

    private let presenter: WirelessSpeakersPresenter = WirelessSpeakersPresenter(view: self as! WirelessSpeakersView)

但是最后一行會產生運行時異常

無法將類型'(WirelessSpeakersViewController)->()-> WirelessSpeakersViewController'(0x102cfbf20)的值轉換為'WirelessSpeakersView'(0x102cfbf58)。

我不明白。 為什么類型命名看起來如此復雜(->()->)? 我不認為會導致ViewController正確實現View協議的任何困難。

在ViewController初始化之后,使變量Presenter變得懶惰或對其進行初始化。 該錯誤可能是因為它試圖在初始化之前鍵入類型轉換viewcontroller對象。

private lazy var presenter: WirelessSpeakersPresenter = {
        let p = WirelessSpeakersPresenter(view: self as! WirelessSpeakersView)
        return p
    }()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM