在Swift中使用Alamofire处理JSON响应
对不起,我的英语不好 :)
我在iOS应用程序的Swift中通过Alamofire解析JSON响应时遇到问题。我编写了一个函数来返回JSON响应字符串。请求和响应处理我做Alamofire和JSON处理我做SwiftyJSON。首先,我声明一个名为
,其值为 。然后,我向REST服务发出请求,并通过单击按钮获得JSON响应。我想使用函数
返回此响应。最后,我将返回的响应打印为测试。但是在第一次单击按钮时,从 返回的值是
而不是响应的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
以上是 在Swift中使用Alamofire处理JSON响应 的全部内容, 来源链接: utcz.com/qa/419470.html