【问题标题】:Syntax for a function with closure and arguments in a function on SwiftSwift 函数中带有闭包和参数的函数的语法
【发布时间】:2016-02-01 07:06:17
【问题描述】:

我环顾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 错误消息并没有多大帮助。

我认为这是不可能的,所以请帮助我。

【问题讨论】:

    标签: swift asynchronous closures alamofire


    【解决方案1】:

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

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

    它在功能上等同于前面的答案,但有些人觉得它更具可读性。

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 1970-01-01
        • 2019-01-07
        • 2016-08-03
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多