在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

回到顶部