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



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

视图的定义类似于协议:

protocol WirelessSpeakersView {
    func present()
    func goBack()
    func alertSaveFailed()
}

我在视图控制器中构造演示器,如下所示:

class WirelessSpeakersViewController: UIViewController, WirelessSpeakersView  {
    private let presenter: WirelessSpeakersPresenter = WirelessSpeakersPresenter(view: self as! WirelessSpeakersView)

但是最后一行会产生运行时异常

无法转换类型"的值(无线扬声器视图控制器( -> (( -> WirelessSpeakerViewController' (0x102cfbf20( 改为 'WirelessSpeakerView' (0x102cfbf58(。

我没有得到。为什么类型命名看起来如此复杂(->(( -> (?我预计不会有任何困难导致视图控制器正确实现视图协议。

使变量表示器延迟或在视图控制器初始化后对其进行初始化。此错误可能是因为它尝试在启动之前键入转换视图控制器对象。

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

最新更新