2

在升级到 XCode6.1 之前,我使用的是 NSData.dataWithContents() 方法,它运行良好,所有图像都在下载。今天我已经更新到 XCode 6.1,它迫使我使用这样的函数:

NSData(contentsOfURL: NSURL(string: completeUrl)!)!

当我运行应用程序时,它会崩溃并显示消息:

致命错误:在展开可选值时意外发现 nil

我尝试了很多东西,但没有任何效果。我正在寻找任何简单的替代方法来从给定的 URL 下载图像。

4

2 回答 2

7

由于初始化NSURL可能会由于多种原因而失败,因此您最好以这种方式使用它:

if let url = NSURL(string: completeUrl) {
    if let data = NSData(contentsOfURL: url) { // may return nil, too
        // do something with data
    }
}
于 2014-10-22T11:48:02.110 回答
1

更好的下载文件方法是:

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)
})

它工作得非常好,它也让你对请求有更多的控制。

于 2014-10-22T11:55:32.747 回答