无法转换类型的值 - 使用协议初始化(Swift)

时间:2018-01-04 14:48:51

标签: swift

我正在为Swift中的View Controller实现简单的MVP模式(3)。

视图定义为协议:

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协议。

1 个答案:

答案 0 :(得分:3)

使变量presenter延迟或在viewcontroller初始化后初始化它。此错误可能是因为它在尝试初始化之前尝试键入强制转换viewcontroller对象。

sum