gpt4 book ai didi

ios - 在 Swift 中使用 Alamofire 处理 JSON 响应

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:24 24 4
gpt4 key购买 nike

抱歉我的英语不好:)

我在为 iOS 应用程序解析 Swift 中通过 Alamofire 的 JSON 响应时遇到问题。我写了一个函数来返回一串 JSON 响应。我使用 Alamofire 进行的请求和响应处理以及我使用 SwiftyJSON 进行的 JSON 处理.在开始时,我声明了一个名为 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

关于ios - 在 Swift 中使用 Alamofire 处理 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com