iOS沙盒独立文件路径
iOS sandbox independent file path
我正在为 iOS 开发一个简单的应用程序。
我真的很惊讶,当图像像下面的代码一样写入时,路径在应用程序重新启动之前保持有效。应用程序重新启动后,将创建新的沙箱,这会使以前的路径失效。我正在尝试找到一种方法来拥有独立于沙箱的文件路径。是否有可能不经过解决周期(即 FileManager.default.url...)?
static func saveToDocument(name: String, image: UIImage) -> String? {
guard let data = image.pngData() else { return nil; }
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return nil
}
do {
let file = directory.appendingPathComponent("\(name).png");
try data.write(to: file!)
return file?.absoluteString
} catch {
return nil
}
}
停止搜索,没有办法,这是有充分理由的:您的数据安全。
你总是要用FileManager.default.url(for
获取文档目录的URL,没那么贵。
Guard
不需要URL,文档文件夹保证存在。
Return 只有文件名而不是完整的 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
}
并且永远不要像 Swift 中的 NSURL
一样使用 NS...
类 如果有本地对应项 (URL
)。
我正在为 iOS 开发一个简单的应用程序。 我真的很惊讶,当图像像下面的代码一样写入时,路径在应用程序重新启动之前保持有效。应用程序重新启动后,将创建新的沙箱,这会使以前的路径失效。我正在尝试找到一种方法来拥有独立于沙箱的文件路径。是否有可能不经过解决周期(即 FileManager.default.url...)?
static func saveToDocument(name: String, image: UIImage) -> String? {
guard let data = image.pngData() else { return nil; }
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return nil
}
do {
let file = directory.appendingPathComponent("\(name).png");
try data.write(to: file!)
return file?.absoluteString
} catch {
return nil
}
}
停止搜索,没有办法,这是有充分理由的:您的数据安全。
你总是要用FileManager.default.url(for
获取文档目录的URL,没那么贵。
Guard
不需要URL,文档文件夹保证存在。
Return 只有文件名而不是完整的 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
}
并且永远不要像 Swift 中的 NSURL
一样使用 NS...
类 如果有本地对应项 (URL
)。