应用更新,NSURL和文档目录

fli*_*zit 8 nsurl updates ios nsdocumentdirectory

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

我们注意到,当更新进入应用程序商店时,找不到这些图像,因此不会使用与先前版本的应用程序一起存储的引用来显示这些图像.现在,我怀疑问题是,因为我们使用开发设备进行测试,所以这个问题会传播,因为dev应用程序使用的Applications目录中的Directory与App store正在创建/使用的目录不同.我注意到应用程序中App的App Store目录与Xcode中调试版本时创建的App Store目录之间存在差异.因此,存储在核心数据中的URL指向错误的应用程序文件夹.这有点难以调试,因为一旦新版本在商店中发布,我就无法下载旧的应用程序版本.

所以我有几个问题.我是否可以保证下载同一应用程序版本的人员所在的Applications子目录是相同的,这使得非开发设备无问题?

我应该存储相对图像网址或字符串来表示这些资源的位置,还是应该可以存储最终成为绝对网址的内容?

非常感谢,费利佩

Sco*_*sak 14

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

应用更新期间保存的文件

当用户下载应用更新时,iTunes会将更新安装在新的应用目录中.然后,在删除旧安装之前,它会将用户的数据文件从旧安装移动到新的app目录.保证在更新过程中保留以下目录中的文件:

  • APPLICATION_HOME /文档
  • APPLICATION_HOME /库

虽然其他用户目录中的文件也可能会被移动,但您不应该在更新后依赖它们.

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

Thx到沙盒,应用程序主页也是用户家.因此,有可能需要使用UNIX波浪是手短到用户家中,即~/Documents,~/Library等等.

使用-[NSString stringByAbbreviatingWithTildeInPath]把一个完整路径相对〜路径.用它来扭转它-[NSString stringByExpandingTildeInPath].

  • 我不知道iTunes安装更新时创建了一个新的应用程序目录:我最终使用绝对路径无效的符号链接.所以要小心iOS开发人员的这种行为!:) (2认同)