Swift 中的完成处理程序

7

我已经花费了很多时间寻找Swift中的闭包问题解决方案。虽然有很多资源可以解释闭包,但由于某种原因,我似乎无法使其正常工作。

这是我正在尝试转换为Swift的Objective-C代码:

[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
            NSLog(@"%@",[response description]);
            NSLog(@"%@",[error description]);

            }];

我正在尝试使用Swift,但它无法正常工作。
directions.calculateDirectionsWithCompletionHandler(response: MKDirectionsResponse?, error: NSError?) {
    println(response.description)
    println(error.description)
}

directions是一个MKDirections对象。

谢谢!

3个回答

10

尝试

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

1
这个可行,非常感谢!天啊.. 闭包.. XD 当我可以标记为答案时,我会这样做的。再次感谢! - Eytan Schulman
directions.calculateDirectionsWithCompletionHandler ({(response, error) in /* code */ }) 计算方向并使用完成处理程序 ({(response, error) in /* code */ }) - David

2

enter image description here

以下是Swift中块/闭包的一般形式。

如果你不需要使用参数,可以这样写:

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

1

关于 Swift闭包 的语法,以及检查 MKDirections 类参考文档:

enter image description here

看起来这里应该使用适当的闭合,即MKDirectionHandler,其定义如下:

enter image description here

因此,完成处理程序应该像这样:
direction.calculateDirectionsWithCompletionHandler( { (response: MKDirectionsResponse!, error: NSError!) -> () in
    println(response.description)
    println(error.description)
    } )

此帖子被标记为低质量。尽管您的声誉很高,请添加更多的解释。 - Jean-Rémy Revy
@Jean-RémyRevy,我的错,抱歉。 - holex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接