Swift中的完成处理程序

时间:2014-07-03 13:25:00

标签: ios mkmapview swift mapkit routes

我一直在寻找很多小时试图在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对象。

谢谢!

3 个答案:

答案 0 :(得分:10)

尝试

directions.calculateDirectionsWithCompletionHandler ({
(response: MKDirectionsResponse?, error: NSError?) in 
        println(response?.description)
        println(error?.description)
    })

答案 1 :(得分:2)

enter image description here

这是Swift中块/闭包的一般方式。

如果您不需要使用这些参数,可以像这样做

directions.calculateDirectionsWithCompletionHandler ({
(_) in 
  // your code here
    })

答案 2 :(得分:1)

关于 Swift Closures的语法,并检查MKDirections类参考:

enter image description here

它看起来正确的闭包应该是MKDirectionHandler,定义为:

enter image description here

因此完成处理程序应如下所示:

direction.calculateDirectionsWithCompletionHandler( { (response: MKDirectionsResponse!, error: NSError!) -> () in
    println(response.description)
    println(error.description)
    } )