gpt4 book ai didi

ios - 当应用程序更新时,iOS 上的本地文件会发生什么变化?

转载 作者:可可西里 更新时间:2023-11-01 17:02:58 26 4
gpt4 key购买 nike

我的 iOS 应用正在将本地文件写入:

/var/mobile/Containers/Data/Application/A.../Library/a.txt

当我的应用程序更新时,它会获得一个新的应用程序容器 ID 和文件夹:

/var/mobile/Containers/Data/Application/B...

我写入容器 ID A 的所有文件会怎样?

是否有“更新 Hook ”允许我将所有“A”容器文件复制到路径“B”?

新版本的应用程序 (B) 可以读取旧版本的文件 (A) 吗?

是否有关于文件系统在更新期间发生的情况的文档?

是否可以在安装 B 后从容器 A 恢复文件?

最佳答案

当您更新应用程序时,通过更改 .plist 文件中的版本号,iOS 会使用不同的十六进制名称为该应用程序创建一个新目录,并将所有文件复制到新目录中。现在,如果您使用绝对路径从目录中获取文件的详细信息,那么这些路径将不正确,您将无法获取文件详细信息。

我刚刚在模拟器中试过这个。我创建了一个如下所示的函数,它将返回文档目录路径 url

func getDocumentsDirectory() -> URL {

let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}

当版本号为 1.0 时,我从应用程序委托(delegate)中的 didFinishLaunchingWithOptions 调用了这个函数,它返回了以下路径:

file:///Users/BhargavRathod/Library/Developer/CoreSimulator/Devices/3082611F-BCCA-4D17-B390-E0EF4CA454DA/data/Containers/Data/Application/72759097-38F3-4292-825E-1D2343219973/Documents/

当我将版本号更新为 1.1 时,它向我返回了新路径:

file:///Users/BhargavRathod/Library/Developer/CoreSimulator/Devices/3082611F-BCCA-4D17-B390-E0EF4CA454DA/data/Containers/Data/Application/72DC31E9-C32F-42CC-8449-F1946ADB1018/Documents/

因此,如果您使用绝对路径访问文档目录中的任何文件,那么这不是一个好习惯。您可以只保存文件名(或文档目录后的相对路径),每当需要访问该文件名时,然后获取文件名并将其附加在文档目录路径后并访问该文件。

希望对您有所帮助。

关于ios - 当应用程序更新时,iOS 上的本地文件会发生什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com