【发布时间】:2016-06-09 12:12:17
【问题描述】:
我知道这个问题之前已经被问过几十次了,但不幸的是,我对 Swift 的了解不够,无法根据我的问题调整这些答案。
基本上,我有一个函数可以将 POST 请求发送到服务器上的 php 脚本,但接收响应似乎比我的脚本使用结果需要更长的时间。它发送一个数字变量并接收一个作为响应,因此我还将它从“any_object”转换为“NSNumber”。 据我了解,我需要实现一个完成处理程序,但我似乎无法弄清楚如何让它与下面的代码一起使用。
var dataResult: Int = 0
var dataReceived: NSNumber?
func remoteRand() {
let dataToSend = 1
let myUrl = NSURL(string: "http://localhost/scripts/phpScript.php")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = "dataToSend =\(dataToSend)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
dispatch_async(dispatch_get_main_queue()) {
if (error != nil) {
self.displayAlertMessage((error?.localizedDescription)!)
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = json {
let dataReceived = parseJSON["dataValue"]
self.dataResult = (dataReceived as! NSNumber).integerValue
print("\(self.dataResult) is server response")
}
} catch { print(error)}
}
}
task.resume()
processResult()
}
func processResult() {
print(dataResult)
}
我得到的结果是:
0
1 is server response
如何让它在继续执行下一个函数之前等待响应,或者在确认完成后触发下一个函数?
提前致谢!
【问题讨论】: