我将文件保存在我的iPad应用程序的私人目录中,即我使用时返回的目录:
paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Private Documents"];
请注意,我还附加了一个子目录。当我更新应用程序时,用户告诉我他们在应用程序中的进度正在被破坏。每次更新应用程序时,是否会破坏此NSLibraryDirectory中的文件?如果是这样,我应该使用NSDocumentDirectory吗?
此外,有没有办法进一步更新我的应用程序来解决这个问题,而不会破坏我当前用户的所有保存文件?它似乎没有。
答案 0 :(得分:17)
当用户下载应用更新时,iTunes会将更新安装在新的应用目录中。然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的app目录。保证在更新过程中保留以下目录中的文件:
APPLICATION_HOME /文件
APPLICATION_HOME /库
虽然其他用户目录中的文件也可能被移动,但您不应该在更新后依赖它们。
这是Apple正式提供的。看到这个链接: iOS Developer Library - File Saved During App Updates
答案 1 :(得分:3)
我还想将此信息添加为大型在线游戏的个人体验。您不能100%依赖“文档”和“库”文件夹始终存在。实际上,您不能相信更新后您的应用文件夹仍会在设备上的同一位置。
让我再解释一下。当您在设备上安装应用时,真正的路径将是/ var / mobile / Applications / [some class id] / [your app] .app / ... 我们不确定是谁定义了您的应用程序的类ID(iOS或应用程序商店),但是在更新游戏时此ID可能会更改,导致您的应用程序位于完全不同的文件夹中,因此您的旧文件不再存在。我们的QA也经历过它和我们的用户。
我不会详细介绍我们如何找到这一点以及我们如何设法绕过这个(私人公司的东西,通常的狗屎......),但如果你正在做一个应用程序你需要考虑它这会影响大量用户,可能会更新几次。它可能已经修复了,但是有一个备份计划总是好的。
答案 2 :(得分:2)
您应该将它们保存在Documents文件夹中,它在更新过程中保持不变。
Monotouch:documentsDirectory = environment.specialfolder.personal;
Objective-C:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)