我有一个问题,以获得异步过程中的价值。swift iOS从异步获取价值(发布数据)
我的课是:
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!
}
有很多帖子完全相同的问题。您不能从异步函数返回值。异步回调必须存储结果并触发所有必需的操作。 – gnasher729