iOS沙箱独立文件路径

时间:2019-03-09 07:05:08

标签: ios swift uiimage

我正在为iOS开发一个简单的应用程序。 我真的很惊讶,当像下面的代码那样编写图像时,该路径在应用程序重新启动之前仍然有效。应用重新启动后,将创建新的沙箱,这会使先前的路径无效。我正在尝试找到一种具有沙盒独立文件路径的方法。

甚至可以不进行解析周期(即FileManager.default.url ...)吗?

Form1

1 个答案:

答案 0 :(得分:1)

停止搜索是不可能的,这有一个很好的理由:数据的安全性。

您总是必须使用FileManager.default.url(for获取文档目录的URL,这并不昂贵。

Guard不需要输入URL,可以保证documents文件夹存在。

仅返回文件名而不返回完整的URL字符串,我建议使函数throw移交所有错误。

enum FileError : Error {
    case noData
}

static func saveToDocument(name: String, image: UIImage) throws -> String {
    guard let data = image.pngData() else { throw FileError.noData }
    let directory = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)            
    let fileURL = directory.appendingPathComponent("\(name).png")
    try data.write(to: fileURL)
    return fileURL.lastPathComponent
}

如果有本机副本(NS...),则不要在Swift中使用NSURL这样的URL类。