我正在为iOS开发一个简单的应用程序。 我真的很惊讶,当像下面的代码那样编写图像时,该路径在应用程序重新启动之前仍然有效。应用重新启动后,将创建新的沙箱,这会使先前的路径无效。我正在尝试找到一种具有沙盒独立文件路径的方法。
甚至可以不进行解析周期(即FileManager.default.url ...)吗?Form1
答案 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
类。