使用 alamofire 首次单击时未获得 json 响应

Posted

技术标签:

【中文标题】使用 alamofire 首次单击时未获得 json 响应【英文标题】:Not getting json response on first click using alamofire 【发布时间】:2017-06-20 07:00:45 【问题描述】:

我正在使用 alamofire 获取 JSON 响应。 当我第一次单击按钮时,我没有得到响应。几次后我检查过,以确定我的网速是否低。互联网速度还可以,每次发生这种情况时仍然没有进入 if 条件来打印响应。请帮忙。提前致谢!!

下面是我的代码

Alamofire.request(url).responseJSON  response in

                if let JSON = response.result.value
                
                    let responseRes = JSON as? Dictionary<String,AnyObject>
                    print("Response = \(responseRes!)")
                
            

【问题讨论】:

请尝试:- 让 responseRes = JSON["data"]!作为!数组 【参考方案1】:

这将在 Swift 3.1

中完美运行
func testURL () 
    let parameter = ["id": 19, "name": "", "image_name": "", "largeimage": "", "catdata": ["category_name"]] as [String: Any]
    //Here parameter as per your web service.
    //var parameter = [String : Any]()
    //print("t:-\(parameter)")
    guard let url = URL(string: "YourWebServiceURL") else  return 
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameter, options: []) else  return 

    request.httpBody = httpBody

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    let session = URLSession.shared
    session.dataTask(with: request) (data:Data?, response:URLResponse?, error:Error?) in
        if let response = response 
            print(response)

            do 
                    let json = try JSONSerialization.jsonObject(with: data!) as! [String: Any]

                print(json["data"]!)
                let dataarray = json["data"]! as! Array<Any>
                for i  in dataarray 
                    let webServiceArray = i as! [String : Any]
                    //Below all the Object as per you webService objects.
                    print(webServiceArray["name"]!)
                    print(webServiceArray["largeimage"]!)
                    print(webServiceArray["image_name"]!)
                    print(webServiceArray["id"]!)
                
             catch 
                print("Error deserializing JSON: \(error)")
            
        
    
        .resume()

ViewDidLoad中访问此功能。

【讨论】:

我想用 alamofire 来做这个。如果可能,请给出解决方案。谢谢 你能把你的网络服务的链接发给我吗?

以上是关于使用 alamofire 首次单击时未获得 json 响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 OHHTTPStubs 模拟时未达到 Alamofire 响应块

单击“确定”后首次运行 GPS 未启动

关闭时未调用 Alamofire 请求

单击导航抽屉引导程序时未显示侧导航栏

Angular Material Stepper 在首次加载时未定义

使用动态链接首次下载后更新应用程序时未调用 openURL 方法