![](/img/trans.png)
[英]How to get 2 different webviews with 2 different NSURLSession (iOS Swift)
[英]Swift iOS how to get the result of NSURLSession
我有一个关于NSURLSession
的问题,我已经使用NSURLSession
下载了JSON
数据,我想在enter code here
访问JSON enter code here
这是我的代码
// variable declared in my class
var jsonData = JSON("")
// my function
func loadCategories(){
var url = NSURL(string: "http://localhost:8888/api/v1/getAllCategories")
var request = NSMutableURLRequest(URL:url!)
request.HTTPMethod = "GET"
NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, errors: NSError!) in
self.jsonData = JSON(data: data)
}).resume()
}
当我试图让jsonData的外块NSURLSession
我得到空变量
有什么帮助吗?
检查是否在同一线程上访问jsonData。 也许您在这里有比赛条件。
问题是您不了解带有完成块的异步功能如何工作。
看看我对此线程的回答。 我详细解释了发生了什么:
为什么Microsoft Azure(或一般称为Swift)在表查询后无法更新变量以返回?
(不要让线程的标题误导您。它与Microsoft Azure无关。)
您正在使用的方法dataTaskWithRequest在URL会话的委托队列上调用完成关闭。 除非您提供了一个后台队列作为委托队列,否则您无需为dispatch_async烦恼。
我发现了解决方案让优先级= DISPATCH_QUEUE_PRIORITY_DEFAULT dispatch_async(dispatch_get_global_queue(priority,0)){self.jsonData = JSON(数据:数据)dispatch_async(dispatch_get_main_queue()){self.collectionView?reloadData()}}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.