阅读 345

iOS 将文件保存到沙盒失败小记

文件怎么存到沙盒里?

网上都这么写的:

  1. 先指定一个路径
  2. 然后如果是 image 就转 data,否则直接 write file

代码如下:

// file manager 在这
let fileManager: FileManager = FileManager.default
// 然后就哐一下子指定个 url 路径
let fileURL: URL = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first!).appendingPathComponent("SaveFolder/image.png", isDirectory: true)
// 路径指定完了,就存呗(假设我现在要存图片昂)
guard let imageData = image.pngData() else {
   return nil
}
do {
    print("Write image")
    try imageData.write(to: fileURL)
} catch {
    print("Error Writing Image: \(error)")
}
复制代码

我这边会走 write image,不走 catch 的 error,但是莫名其妙啊,却在沙盒里找不到我存的文件!!!

这是咋回事啊???正确方式该咋存啊

俺们存东西之前,得保证路径存在,如果新的路径不存在,就有可能会保存失败!!

所以加上下面的代码

do {
    // 所以俺们就把这个路径给造出来 然后再存它!
    try fileManager.createDirectory(atPath: fileURL.absoluteString, withIntermediateDirectories: true, attributes: nil)
} catch {
    print("create path error: \(error)")
}
复制代码

完整版代码如下: