您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用Alamofire发出同步请求?

如何使用Alamofire发出同步请求?

当您使用完成处理程序时,请勿使用return。

func loadData(completion: @escaping (_ number: Int, _ strArr1: [String], _ strArr2: [String], _ strArr3: [String]) -> ()){

  Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in

    switch(response.result) {
    case .success(_):
        if let JSON = response.result.value as! [[String : AnyObject]]!{
            //Here I retrieve the data
        }
        completion(number: numberRows, strArr1 : nameArray, strArr2 : ageArray, strArr3: birthdayArray)
        break

    case .failure(_):
        print("Error")
        completion(number: numberRows, strArr1 : nameArray, strArr2 : ageArray, strArr3: birthdayArray)
        break
    }
  }
}

loadData (completion: { (number, strArr1, strArr2, strArr3) in
    // do it
    // for exapmple
    self.number = number
    self.strArr1 = strArr1
    // and so on

})

或者,如果要在闭包中返回任何值,则必须使用完成处理程序来返回任何值或类似的东西,例如,如果要返回布尔值:

func loadData(completion:(number: numberRows, strArr1 : nameArray, strArr2 : ageArray, strArr3: birthdayArray) -> (Bool))

并在 loadData

loadData( completion: { ( number, strArr1, strArr2, strArr3 ) -> (Bool) in
       # code 
       return False
})

或其他想法。

我使用的是swift3。但是,如果您要使用其他版本的swift,请注意外部参数名称和内部参数名称,例如: @escaping (_ number:Int, _ strArr1: [String], _ strArr2: [String], _ strArr3: [String]) -> ())

如果要设置外部参数名称,只需删除_并设置参数名称即可。

其他 2022/1/1 18:15:41 有565人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶