我正在为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协议。
答案 0 :(得分:3)
使变量presenter延迟或在viewcontroller初始化后初始化它。此错误可能是因为它在尝试初始化之前尝试键入强制转换viewcontroller对象。
sum