Swift:NSData(contentsOfURL)在XCode 6.1上崩溃



在升级到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)
})

它工作得很好,也让你可以更好地控制请求。

最新更新