我想在一個快速項目中實現一個回調,就像我在Objective-C中做的那樣我需要一個類型爲closure的變量。該閉包應該將參數作爲一個對象並且不返回任何內容。快速關閉作爲變量存儲和訪問
var downloadCompleted: (MLBook) -> (Void)!
當我需要觸發回調我這樣做:
if self.downloadCompleted {
self.downloadCompleted(book)
}
編譯器與此錯誤消息抱怨:
Type '(MLBook) -> (Void)!' does not conform to protocol 'BooleanType'
如果我刪除if語句編譯器說:
Property 'self.downloadCompleted' not initialized
偶數儘管它隱含地解開了。
當我試圖讓回調:
BookStore.sharedInstance.downloadCompleted{(book: MLBook) ->() in
println("Print if you got the callback")
}
我收到此錯誤信息:
'(MLBook) ->()' is not convertible to 'MLBook'
我更擔心的是最後一條錯誤消息,因爲我不太清楚是什麼它試圖告訴我。
任何幫助,將不勝感激。謝謝
感謝。這就說得通了。但是當我嘗試獲取回調BookStore.sharedInstance.downloadCompleted {(book:MLBook) - > Void println(「Haha:」) }我得到一個錯誤:無法用類型爲'(')的參數調用'println' MLBook) - >虛空'。我很確定我沒有說得對。任何想法爲什麼? – alex 2014-11-08 12:11:34
我想你錯過了將封閉分配給屬性的「=」。 – Shuo 2014-11-08 12:14:04