【发布时间】:2019-10-05 13:13:30
【问题描述】:
我的 iOS 应用正在将本地文件写入到:
/var/mobile/Containers/Data/Application/A.../Library/a.txt
当我的应用更新时,它会获得一个新的应用容器 ID 和文件夹:
/var/mobile/Containers/Data/Application/B...
我写入容器 ID A 的所有文件会发生什么情况?
是否有一个“更新挂钩”可以让我将所有“A”容器文件复制到路径“B”?
新版本的应用程序(B)可以读取旧版本的文件(A)吗?
是否有关于更新期间文件系统发生了什么的文档?
容器A安装后是否可以从容器A中恢复文件?
【问题讨论】:
-
我认为更新应用不会删除 Documents 目录中的当前文件。
-
想想吧。如果每次应用更新都导致数据丢失,用户会有什么反应?您在开发应用程序时有什么经验?每次您在 Xcode 中进行另一次构建时,基本上与进行应用程序更新相同。您的数据是否在构建之间丢失?
-
是的,您会在构建和应用更新期间获得一条新路径。但是您的数据会消失吗?您是否曾经丢失过更新 iOS 设备上的任何应用程序的应用程序数据?只要您的应用没有在数据库或类似文件中存储文件的绝对路径,您是否遇到过问题?
-
@zino 同样,当您进行新构建时,您的文件会消失吗?不,他们不是。事情很好。 iOS 将沙盒复制到新位置。
-
容器ID是否改变并不重要,尽管你应该假设它会改变。但是,如果您的应用关心容器 id 是否更改,那么您的代码编写不正确。
标签: ios