加载JSON时如何做某事

时间:2017-08-30 18:19:21

标签: swift alamofire

我有JSON连接,加载JSON字符串时是怎么做的,如果不加载 - 期望完全加载。在这种情况下加载后我想显示一个Toast消息。通常在加载信息时会有几秒钟的延迟。

Alamofire.request("https://codewithchris.com/code/afsample.json").responseJSON{ response in

        if let value = response.result.value{

            let json = JSON(value) 
            \\ view.makeToast("JSONIsLoaded", duration: 2, position: bottomLayoutGuide, title: "title", image: UIImage (named: "logo.jpg"), style: style ) { (success: Bool) in}
        }

    }

}

2 个答案:

答案 0 :(得分:1)

以下是您如何使用Alamofire自动验证响应。如果响应返回到200范围内,您可以运行一些代码,如果它返回任何其他内容,它将失败,您可以在那里发现任何错误。您还可以在以下代码中启动和停止活动指示器,以便用户注意到正在进行后台操作。

//start activity indicator here

Alamofire.request("https://codewithchris.com/code/afsample.json").validate().responseJSON { response in

    switch response.result {

    case .success(let value):

          if let json = JSON(value) {
            // Do whatever you want with json
            //hide activity indicator here
           }
           else
            {
             //No data returned
            }

    case .failure(let error):
        print(error)
        //hide activity indicator here

    }

}

答案 1 :(得分:0)

Alamofire在后台提出要求。所以你也会在背景线程中得到回应。但是我们应该刷新或更新主线程中的ui,因为在backgroud线程中会有滞后或者在ui上找不到任何更新。因此,请使用DispatchQueue.main.async {ui updates code}