【发布时间】:2015-05-04 07:50:36
【问题描述】:
我在异步过程中获取价值时遇到问题。
我的班级是:
public class PostService: NSObject {
var result : String = String()
//this is my function
func request(var dataPost : String, var destination : String)->String{
let request = NSMutableURLRequest(URL: NSURL(string: destination as String)!)
request.HTTPMethod = "POST"
let postString = dataPost
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
self.result = responseString as String!
}
task.resume()
//problem is here that result will fill after async
return self.result
}
}
//我这里用了这个函数
override func viewDidLoad() {
super.viewDidLoad()
var dataPost :String="Name=Ali"
var dest : String = "http://example.com/api/getUserName"
var result = Post.request(dataPost, destination: dest)
lbltext.text = result as String!
}
【问题讨论】:
-
很多帖子都有同样的问题。您不能从异步函数返回值。异步回调必须存储结果并触发所有必要的操作。
标签: ios swift asynchronous listener dispatch