Swift函数中带闭包和参数的函数的语法

时间:2015-11-01 07:03:52

标签: swift asynchronous closures alamofire

我环顾了stackoverflow并试图找到我需要的东西,但找不到它,如果它重复,请指出我正确的方向。

问题是,尝试调用具有参数和闭包的函数时的语法令我感到困惑。发现的所有示例似乎只有一个完成处理程序,并且没有任何参数。

我正在使用Alamofire并希望创建一个包装类来处理一些在整个程序中实现它的冗余。

我拥有的是

class ApiInterface{

    func getFromAPI( targetURL: String, completionHandler: (NSDictionary?, NSError?) -> ()) {

        Alamofire.request(.GET, targetURL, parameters: params)
        .responseJSON { response in
            completionHandler(response.result.value as? NSDictionary, response.result.error as? NSError)
        }
    }    
}

我的想法是

ApiInterface().getFromAPI{ targetURL, (response, error) in 


}

但是这会导致错误,而XCode错误消息也无济于事。

我认为不可能这样做,所以请帮助我。

2 个答案:

答案 0 :(得分:1)

试试这个:

ApiInterface().getFromAPI(targetURL, completionHandler: { (response, error) in
})

答案 1 :(得分:1)

由于闭包是getFromAPI的最后一个参数,你也可以使用尾随闭包语法:

ApiInterface().getFromAPI(targetURL) { (response, error) -> () in
    // do stuff
}

它在功能上等同于之前的答案,但有些人发现它更具可读性。