应用程序更新,NSURL和文档目录

我在app store中有一个应用程序,它使用Core Data来保存大部分数据。 例外是存储图像。 我将子目录中的图像存储到Documents目录,并将核心数据存储中相应对象属性中的NSURL引用存储到该图像中。

我们已经注意到,当一个更新到应用程序商店,这些图像没有find,因此不显示,使用与以前版本的应用程序存储的引用。 现在,我怀疑问题在于,因为我们使用开发设备进行testing,所以这个问题会传播,因为开发应用程序使用的应用程序目录中的目录与App Store创build/使用的不同。 我注意到应用程序中应用程序的应用程序商店目录与在Xcode中debugging版本时创build的应用程序目录之间的区别。 因此,存储在核心数据中的URL指向错误的应用程序文件夹。 这是一个很难debugging,因为我不能下载一个较旧的应用程序版本,一旦新版本已经在商店发布。

所以我有几个问题。 我可以保证下载相同应用程序版本的人员的Applications子目录相同,这对非开发设备来说是非问题吗?

我应该存储相对图像的URL或string来表示这些资源的位置,或者我应该罚款存储最终是绝对url?

非常感谢,菲利普

您应该使用相对URL来存储对文件的引用。 应用程序更新后,绝对url可能会更改

在应用更新期间保存的文件

当用户下载应用程序更新时,iTunes将更新安装到新的应用程序目录中。 然后将用户的数据文件从旧的安装移到新的应用程序目录,然后删除旧的安装。 在更新过程中,保证以下目录中的文件被保留:

  • APPLICATION_HOME /文档
  • APPLICATION_HOME /库

尽pipe其他用户目录中的文件也可能被移动,但更新后不应该依赖它们。

https://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

我觉得你要找的是以下几点:

NSString *appDocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];