当前位置: 首页 > 面试题库 >

在Swift中使用Alamofire处理JSON响应

通令
2023-03-14
问题内容

对不起,我的英语不好 :)

我在iOS应用程序的Swift中通过Alamofire解析JSON响应时遇到问题。我编写了一个函数来返回JSON响应字符串。请求和响应处理我做Alamofire和JSON处理我做SwiftyJSON。首先,我声明一个名为
jsonString的变量 ,其值为 test 。然后,我向REST服务发出请求,并通过单击按钮获得JSON响应。我想使用函数
ping(url:String) 返回此响应。最后,我将返回的响应打印为测试。但是在第一次单击按钮时,从 ping 返回的值是
test
而不是响应的JSON字符串。在第二次单击按钮,我得到正确的返回值。为什么我有这个问题。Alamofire是否请求异步操作?我想等待回应。如何解决该问题,以便在首次点击时获得正确的值,而不是作为价值进行
测试

这是我的代码:

var jsonString:String = "test"

func ping(url:String) -> String {

    Alamofire.request(.GET, url)
        .response {
            (request, response, data, error) -> Void in

            let json = JSONValue(data as? NSData)
            self.jsonString = json.rawJSONString
    }

    return self.jsonString
}

@IBAction func checkOnlineStatus(sender: UIButton) {

    let response:String = ping("http://test.com")

    println(response)}

问题答案:

第一次点击,代码

return self.jsonString

将在之前运行

.response {
        (request, response, data, error) -> Void in

        let json = JSONValue(data as? NSData)
        self.jsonString = json.rawJSONString
}

您将在第一时间从self.jsonString获得nil,第二次单击将获得第一次单击的请求数据。

如果您使用SwiftyJSON和Alamofire,则可以尝试Alamofire-
SwiftyJSON



 类似资料:
  • 问题内容: 是否可以为Alamofire请求添加超时处理程序? 在我的项目中,我以这种方式使用Alamofire: 编辑: 请求失败消息 错误域= NSURLErrorDomain代码= -1001“请求超时。” UserInfo = {NSUnderlyingError = 0x7fc10b937320 {Error Domain = kCFErrorDomainCFNetwork Code =

  • 是否可以为Alamofire请求添加超时处理程序? 在我的项目中,我使用Alamofire的方式如下: 编辑: 请求失败消息 Error Domain=NSURLErrorDomain Code=-1001“请求超时。”UserInfo={NSUnderlyingError=0x7fc10b937320{Error Domain=kCFErrorDomainCFNetwork Code=-1001

  • 我是Swift3新手,在获取Json返回然后发送请求时遇到了问题。我试图向服务器发送一个带有参数username和password的post请求,并使用带有信息的Json获得响应,但我还无法获得要返回的数据。 输出: 错误:NSURLErrorDomain:-1003状态代码:200,标头连接=关闭;“Content-type”=“Application/JSON”;“transfer-encod

  • 问题内容: 我将Alamofire用作HTTP库,因为自Swift 3更新以来,如何根据以下示例解析JSON? 是任何对象的东西,非常新而且令人困惑。 问题答案: 如您在Alamofire测试中所见,您应将其转换为:

  • 问题内容: 我有一个页面作为HtmlUnit中的UnexpectedPage返回,响应为JSON。我可以使用HTMLUnit进行解析还是需要一个额外的库? 问题答案: HtmlUnit不支持它。它最多可以执行JS函数。您需要事先检查返回的响应是否匹配,然后使用合适的工具进行解析。Google Gson 在此方面很有用。 如果JSON结构是事先已知的,则您甚至可以使用Gson将其转换为完全有价值的J

  • 当我试图从我的内部web服务器获取json时,我需要处理这个挑战。我从前面的一个问题中得出了这个结论。这是我的密码 这是我收到的错误 Error Domain=NSURLErrorDomain Code=-999"已取消"UserInfo={NSErrorFailingURLKey=https://myhttpsinternaldomain.org, NSLocalizeddescription