在Swift中将图像从.write恢复到文件

时间:2016-02-22 17:49:31

标签: xcode swift swift2

我正在尝试将图像从.write恢复到文件。

以下是我用来保存它的代码:

view.pdfData.writeToURL(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.URLByAppendingPathComponent("test.pdf"), atomically: true) 
        view.pdfData.writeToFile("test", atomically: false)
        print(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.path!)

以下是我试图恢复的方法:

 let path: String? = NSBundle.mainBundle().pathForResource("test", ofType: "pdf", inDirectory: "DirectoryName/Images")
        let imageFromPath = UIImage(contentsOfFile: path!)!
        self.imageview.image = imageFromPath

但我一直在断点:

the breakpoint I'm getting

尼尔

1 个答案:

答案 0 :(得分:0)

您需要以与写作相同的方式构建阅读路径。使用NSBundle.mainBundle().pathForResource将查找随应用安装的应用包中的资源。

let path = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.URLByAppendingPathComponent("test.pdf").path
let imageFromPath = UIImage(contentsOfFile: path!)!

顺便说一下,使用!强制展开选项通常是一个坏主意。它不允许您的应用程序优雅地处理获取零值并导致崩溃(如您发布的那个)。正确的方法就是这样。

if let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first,
    let path = documentsURL.URLByAppendingPathComponent("test.pdf").path,
    let imageFromPath = UIImage(contentsOfFile: path) {
        print("Loaded Image")
} else {
    print("Unable to load image")
}