我正在使用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
,然后跳过显示的其余行。这只是一个我找不到的愚蠢的语法错误吗?谢谢!
答案 0 :(得分:2)
闭包内的代码是异步执行的 - 它在地址字符串地理编码完成后被地理编码器包装并执行。 (这就是一个闭包 - 包装代码和上下文以便以后执行。)你在日志中看到了正确的输出吗?