在升级到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)
})
它工作得很好,也让你可以更好地控制请求。