在swift中发出执行闭包块

时间:2014-09-17 02:28:26

标签: ios swift forecastr

我正在使用swift中的一些API。我遇到了Forecast.io API的天气,下载了一个Objective-c包装器,并在我的xcode项目中创建了一个桥接头。我唯一的问题是我有一个不会执行的闭包(objective-c块)。这是代码:

    var geocoder:CLGeocoder = CLGeocoder()
    geocoder.geocodeAddressString("1 Infinite Loop, Cupertino, CA", completionHandler: {objects, error in
        if (objects.count >= 0) {
            println("yes")
            curLocPlacemark = objects[0] as? CLPlacemark
            if(curLocPlacemark != nil) {
                curLocation = curLocPlacemark!.location
            }
        } else {
            println("no")
        }
    })

调试时,调试器到达行geocoder.geocodeAddressString("1 Infinite Loop, Cupertino, CA", completionHandler: {objects, error in,然后跳过显示的其余行。这只是一个我找不到的愚蠢的语法错误吗?谢谢!

1 个答案:

答案 0 :(得分:2)

闭包内的代码是异步执行的 - 它在地址字符串地理编码完成后被地理编码器包装并执行。 (这就是一个闭包 - 包装代码和上下文以便以后执行。)你在日志中看到了正确的输出吗?