![](/img/trans.png)
[英]Could not cast value of type 'Swift.Dictionary<Swift.String, protocol<>>' to 'Swift.AnyObject'
[英]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.