Выпуск, выполняющий блок закрытия в 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 ответ

Решение

Код внутри замыкания выполняется асинхронно - он упаковывается и выполняется геокодером после завершения геокодирования строки адреса. (Это и есть замыкание - завернутый код и контекст для последующего выполнения.) Видите ли вы правильный вывод в вашем журнале?

Другие вопросы по тегам