我正在绘制地图上的标记,对于我需要从URL下载特定图像的每个标记,显然我需要执行此异步,但我需要知道下载何时完成才触发{{1否则应用程序会崩溃,因为addMarkerToMap ()
。
我尝试过使用过块,但在下载完成之前会发送NSData == nil
或completion
响应。我也尝试过NSURLSessionDelegate但是从不调用Delegate方法。
如果有人可以帮助我,或者至少引导我以一种可行的方式来实现这一目标。
感谢,
修改
这是我尝试的最后一个代码,没有错误正在打印并且没有调用success
:
addMarkerToMap(data)
答案 0 :(得分:0)
它应该是if error == nil
或
if error != nil {
print(error!)
} else {
self.addMarkerToMap(data!)
}
答案 1 :(得分:0)
您必须致电resume()
,否则任务将永远无法完成。
就像@vadian说的那样,你必须重写if ((error == nil))
,否则你的应用可能会找到nil
,同时展开可选的数据值并崩溃。
所以,它会是这样的:
func downloadImageFromURL () {
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession (configuration: config)
let task = session.dataTaskWithURL(self.markerURL!) { (data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if error == nil {
self.addMarkerToMap(data)
} else {
print(error)
}
})
}
task.resume()
}