我希望在Swift项目中实现回调,就像我以前在Objective-C中做的那样。 我需要一个闭包类型的变量。该闭包应该以一个对象作为参数,并返回空值。
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'
我更担心最后的错误信息,因为我不太确定它想告诉我什么。
如果有帮助,将不胜感激。谢谢