2015-10-03 19 views
0

下面的代碼看起來應該可以工作。我收到一個錯誤,說它不符合協議,但它看起來像它完全符合協議。我究竟做錯了什麼?不能讓Swift協議符合 - 但代碼看起來很完美

這個問題是肯定與兩個屬性,因爲我需要註釋掉他們(在協議),以防止錯誤。

class MyOtherClass { 
} 

class AnotherClass { 
} 

protocol MyProtocol { 
    var type: AnyClass { get } 
    var myClosure: (text: String) -> MyOtherClass { get } 
} 

class MyClass: MyProtocol { 
    var type = AnotherClass.self 
    var myClosure = { 
    (text: String) -> MyOtherClass in 
    return MyOtherClass() 
    } 
} 
+0

什麼是確切的錯誤信息? –

+0

我沒有把這個,因爲我認爲這是顯而易見的。確切的錯誤信息是:「類型'MyClass'不符合協議'MyProtocol'」。 – user2143356

+0

您可能希望發佈所有錯誤消息(例如,當我將代碼粘貼到Playground中時顯示的內容,並顯示「調試區域」窗口;至少有五個更詳細的錯誤;在一個完整的項目中, '在編譯器日誌中可用。) –

回答

1

編譯器出於某種原因無法猜測您的類中的屬性類型。指定類型將解決問題。

class MyClass: MyProtocol { 
    var type : AnyClass = AnotherClass.self 
    var myClosure : ((text: String) -> MyOtherClass) = { (text: String) in 
     return MyOtherClass() 
    } 
} 
相關問題