Swift 语法 - 闭包

Swift syntax - closures

我有点难以在 SWIFT 中为此函数构建一个调用

func addressFromLocation(location:CLLocation!, completionClosure:((NSDictionary?)->())){

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
        var geoCoder = CLGeocoder()
        geoCoder.reverseGeocodeLocation(location, completionHandler: { (placeMarks, error) -> Void in
            if let places = placeMarks {
                var marks = places[0] as! CLPlacemark
                completionClosure(marks.addressDictionary)
            }else {
                completionClosure(nil)
            }

        })
    })
}

有人可以帮忙吗?

首先,您可以从completionClosure参数类型中删除不必要的括号:

func addressFromLocation(location: CLLocation!, completionClosure: NSDictionary? -> ()){
    //...
}

你可以这样调用这个函数:

addressFromLocation(location, completionClosure: {
    dict in
    // your code
})

或者更简单,因为如果闭包是函数的最终参数,那么您可以使用尾随闭包语法:

addressFromLocation(location) {
    dict in
    // your code
}

如果你不需要命名参数dict那么你可以通过编号引用参数:

addressFromLocation(location) {
    print([=13=])
}