我一直在寻找很多小时试图在swift中找到解决这个闭包问题的方法。我找到了很多资源来解释闭包,但由于某种原因,我似乎无法实现这一点。
这是我试图转换为swift的Objective-C代码:
[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
NSLog(@"%@",[response description]);
NSLog(@"%@",[error description]);
}];
和我正在尝试的但是没有工作:
directions.calculateDirectionsWithCompletionHandler(response: MKDirectionsResponse?, error: NSError?) {
println(response.description)
println(error.description)
}
指示是MKDirections
对象。
谢谢!
答案 0 :(得分:10)
尝试
directions.calculateDirectionsWithCompletionHandler ({
(response: MKDirectionsResponse?, error: NSError?) in
println(response?.description)
println(error?.description)
})
答案 1 :(得分:2)
这是Swift中块/闭包的一般方式。
如果您不需要使用这些参数,可以像这样做
directions.calculateDirectionsWithCompletionHandler ({
(_) in
// your code here
})
答案 2 :(得分:1)
关于 Swift 中Closures的语法,并检查MKDirections
类参考:
它看起来正确的闭包应该是MKDirectionHandler
,定义为:
因此完成处理程序应如下所示:
direction.calculateDirectionsWithCompletionHandler( { (response: MKDirectionsResponse!, error: NSError!) -> () in
println(response.description)
println(error.description)
} )