在升级到XCode6.1之前,我使用的方法是NSData.dataWithContents(),它完美地运行了所有下载的图像。今天我已更新到XCode 6.1,它迫使我使用这样的函数:
NSData(contentsOfURL: NSURL(string: completeUrl)!)!
当我运行应用程序时,它会在消息上崩溃:
致命错误:在展开Optional值时意外发现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)
})
它工作得非常好,并且它可以让您更好地控制请求。