我正在为 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
}()