NSSearchPathForDirectoriesInDomains和持久数据的问题

时间:2011-05-15 09:06:00

标签: ios persistence storage

正如所建议的那样,我们使用以下代码来检索用户文档的路径

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

我们得到以下路径:/ var / mobile / Applications / 3E3C1F45-6649-4EA3-93FD-CDB802E346EC / Documents /

在所述路径中,我们保存所有用户的持久数据。

我们遇到了从应用程序商店升级应用程序版本的用户的一些问题,持久性数据没有延迟读取,可能路径已更改,可能在新版本中使用了新的GUID。

因为只有在appstore更新之后才会发生这种情况,并且测试和调试此问题的能力有限。

1 个答案:

答案 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在运行时返回的任何内容。