Выпуск, выполняющий блок закрытия в swift
Я играю с некоторыми API в быстрой. Я наткнулся на API Forecast.io для погоды, загрузил оболочку Objective-C и создал мостовой заголовок в своем проекте xcode. Единственная проблема, с которой я столкнулся - это то, что у меня есть замыкание (блок target-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 ответ
Код внутри замыкания выполняется асинхронно - он упаковывается и выполняется геокодером после завершения геокодирования строки адреса. (Это и есть замыкание - завернутый код и контекст для последующего выполнения.) Видите ли вы правильный вывод в вашем журнале?