在升级到 XCode6.1 之前,我使用的是 NSData.dataWithContents() 方法,它运行良好,所有图像都在下载。今天我已经更新到 XCode 6.1,它迫使我使用这样的函数:
NSData(contentsOfURL: NSURL(string: completeUrl)!)!
当我运行应用程序时,它会崩溃并显示消息:
致命错误:在展开可选值时意外发现 nil
我尝试了很多东西,但没有任何效果。我正在寻找任何简单的替代方法来从给定的 URL 下载图像。
由于初始化NSURL
可能会由于多种原因而失败,因此您最好以这种方式使用它:
if let url = NSURL(string: completeUrl) {
if let data = NSData(contentsOfURL: url) { // may return nil, too
// do something with data
}
}
更好的下载文件方法是:
let request:NSURLRequest = NSURLRequest(URL: NSURL(string: completeUrl)!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: { (response:NSURLResponse!, imageData:NSData!, error:NSError!) -> Void in
var filePath:String = pathString + "/" + fileName
imageData.writeToFile(filePath, atomically: true)
})
它工作得非常好,它也让你对请求有更多的控制。