【问题标题】:App Updates, NSURL, and Documents Directory应用更新、NSURL 和文档目录
【发布时间】:2012-03-25 10:09:20
【问题描述】:

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

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

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

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

非常感谢, 费利佩

【问题讨论】:

    标签: ios nsurl updates nsdocumentdirectory


    【解决方案1】:

    您应该使用相对 URL 来存储对文件的引用。应用更新后,绝对 URL 可能会发生变化

    应用更新期间保存的文件

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

    • Application_Home/文档
    • Application_Home/库

    虽然文件 在其他用户目录也可能被移过来,你不应该依赖 他们在更新后出现。

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

    感谢沙盒,应用程序主页也是用户主页。因此可以使用 unix 波浪号,它是用户主页的简写,即~/Documents~/Library 等。

    使用-[NSString stringByAbbreviatingWithTildeInPath] 将完整路径转换为相对~ 路径。并用-[NSString stringByExpandingTildeInPath] 反转它。

    【讨论】:

    【解决方案2】:

    我认为您正在寻找的是以下内容:

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

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      相关资源
      最近更新 更多