正如所建议的那样,我们使用以下代码来检索用户文档的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
我们得到以下路径:/ var / mobile / Applications / 3E3C1F45-6649-4EA3-93FD-CDB802E346EC / Documents /
在所述路径中,我们保存所有用户的持久数据。
我们遇到了从应用程序商店升级应用程序版本的用户的一些问题,持久性数据没有延迟读取,可能路径已更改,可能在新版本中使用了新的GUID。
因为只有在appstore更新之后才会发生这种情况,并且测试和调试此问题的能力有限。
答案 0 :(得分:12)
当用户升级App时,标识符(3E3C1F45-6649-4EA3-93FD-CDB802E346EC)可以更改,但文档和缓存应从旧目录复制到新目录。
您是否有可能将ABSOLUTE路径保存到持久数据并在加载文件时尝试使用它?您应该只保存文档目录中的文件名和目录名,并在每次加载资源时(或至少在启动时)通过附加NSSearchPathForDirectoriesInDomain返回的路径生成完整路径
换句话说,不要保存PATHS,例如
/var/mobile/Applications/3E3C1F45-6649-4EA3-93FD-CDB802E346EC/Documents/MyDirectory/MyFile.txt
相反保存:
/MyDirectory/MyFile.txt
并将其附加到NSSearchPathForDirectoriesInDomain在运行时返回的任何内容。