【问题标题】:Return JSON result of Alamofire request from function Using Swift 4从函数使用 Swift 4 返回 Alamofire 请求的 JSON 结果
【发布时间】:2018-06-29 05:25:59
【问题描述】:

我有一个从 alamofire 请求返回 JSON 结果的函数。最初的想法是从 JSON 结果中检索一个值并将它们存储在数组中,但每次我尝试返回 JSON 结果或填充的 int 数组时,我都会在函数末尾得到一个空结果。请求是:

      func getSeats()-> JSON{
       var json : JSON = JSON()
       Alamofire.request(url , method: .get)
              .responseJSON{
                    response in
                    switch response.result {
                    case .success:
                            json = JSON(response.result.value!)
                    case .failure:
                 KRProgressHUD.showError(withMessage: "Could not retrieve reserved seats")
                    }
            }
           return json
        }

最初,查看 AlamoFire 文档,我尝试使用从 json 结果返回数组的选项,所以我修改了我的代码,如下所示:

 func getSeats()-> [Int]{
   var json : JSON = JSON()
   Alamofire.request(url , method: .get)
          .responseJSON{
                response in
                switch response.result {
                case .success:
                        json = JSON(response.result.value!)
                case .failure:
             KRProgressHUD.showError(withMessage: "Could not retrieve reserved seats")
                }
        }
       return json.arrayValue.map { $0["seat_no"].intValue }
    }

但这也返回了一个空数组,这就是我必须更改函数的原因。我收到的JSON格式如下:

 [
{
    "id": 1,
    "bus_id": 11,
    "seat_no": 6,
    "arrived_at": "2018-01-16 20:58:57"
},
{
    "id": 2,
    "bus_id": 11,
    "seat_no": 27,
    "arrived_at": "2018-01-16 21:40:29"
}

]

我对 Swift 很陌生,这需要我永远理解和解决。

【问题讨论】:

    标签: ios arrays alamofire swift4


    【解决方案1】:

    您的函数在实际设置为JSON(response.result.value!) 之前返回空的json 变量。您不应该像那样返回 json,或者根本不应该返回任何东西。您的函数应该采用闭包参数,而闭包参数本身可以采用您的 json 参数。然后,当您从服务器返回响应并将解析的 json 传递给它时,您可以执行闭包。

    我建议您了解有关同步与异步编程的更多信息。默认情况下,网络是异步的,您请求的数据在服务器的响应中实际返回需要一些时间。

    去研究基本的异步编程,以及使用闭包和完成块的网络。任何基本的 iOS 网络教程都将涵盖这些内容。

    【讨论】:

    • 感谢您的指点。有什么我可以看的例子吗?
    • @user1514567 是的,在整个互联网上。只需进行谷歌搜索。
    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多