在 iOS 更新时是否会从本地文件系统中删除图像?
Will images be removed from within the local filesystem on update in iOS?
我将从相机捕获的图像保存在本地沙箱(文件系统)中,并将文件路径存储在我的应用程序中以显示图像(使用 Swift)。我看到如果我在 XCode 中点击播放,图像将被删除(没关系)
现在我想知道如果我把这个提交到应用商店会发生什么,用户保存图片,我稍后会更新应用。图片也会被删除吗?
为了存储图像,我使用了这个功能..
func saveImageLocally(imageData:NSData!) -> String{
let time = NSDate().timeIntervalSince1970
let fileManager = NSFileManager.defaultManager()
let dir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent(subDirForImage) as String
if !fileManager.fileExistsAtPath(dir) {
var error: NSError?
if !fileManager.createDirectoryAtPath(dir, withIntermediateDirectories: true, attributes: nil, error: &error) {
println("Unable to create directory: \(error)")
return ""
}
}
let path = dir.stringByAppendingPathComponent("IMAGENAME\(Int(time)).png")
var error: NSError?
if !imageData.writeToFile(path, options: NSDataWritingOptions.DataWritingAtomic, error: &error) {
println("error writing file: \(error)")
return ""
}
return path
}
只要您保持相同的应用 ID 并增加版本号,您存储在文档文件夹中的任何内容都将通过应用更新保留。
尽管值得注意的是应用沙箱的完整路径会有所不同(会有一个新沙箱用于更新并将旧数据复制到其中),因此请确保您仅通过存储来访问资源相对路径等,不存储图像的完整路径并期望它们在更新后解析。
我将从相机捕获的图像保存在本地沙箱(文件系统)中,并将文件路径存储在我的应用程序中以显示图像(使用 Swift)。我看到如果我在 XCode 中点击播放,图像将被删除(没关系)
现在我想知道如果我把这个提交到应用商店会发生什么,用户保存图片,我稍后会更新应用。图片也会被删除吗?
为了存储图像,我使用了这个功能..
func saveImageLocally(imageData:NSData!) -> String{
let time = NSDate().timeIntervalSince1970
let fileManager = NSFileManager.defaultManager()
let dir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent(subDirForImage) as String
if !fileManager.fileExistsAtPath(dir) {
var error: NSError?
if !fileManager.createDirectoryAtPath(dir, withIntermediateDirectories: true, attributes: nil, error: &error) {
println("Unable to create directory: \(error)")
return ""
}
}
let path = dir.stringByAppendingPathComponent("IMAGENAME\(Int(time)).png")
var error: NSError?
if !imageData.writeToFile(path, options: NSDataWritingOptions.DataWritingAtomic, error: &error) {
println("error writing file: \(error)")
return ""
}
return path
}
只要您保持相同的应用 ID 并增加版本号,您存储在文档文件夹中的任何内容都将通过应用更新保留。
尽管值得注意的是应用沙箱的完整路径会有所不同(会有一个新沙箱用于更新并将旧数据复制到其中),因此请确保您仅通过存储来访问资源相对路径等,不存储图像的完整路径并期望它们在更新后解析。