【问题标题】:Objective C documents directory keeps changing on deviceObjective C 文档目录在设备上不断变化
【发布时间】:2015-01-04 14:47:16
【问题描述】:

我从一开始就一直在为 iOS 开发,但遇到了一些麻烦。我开始制作一个需要创建文件并将它们保存到文档文件夹和应用程序支持的应用程序,但是使用

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
NSString *filePath = paths[0];

不起作用。每次启动应用程序时,它都会不断调出不同的文件路径。

我在谷歌上搜索过这个问题,到目前为止,每个人似乎都只是说他们在模拟器上遇到了这个问题。但是,这不是仅限于模拟器的问题,每次启动应用程序时都会在设备上发生,无论您是否从 Xcode 运行它。 其他搜索结果只是告诉我这样做的旧方式和/或来自太多年前。

有谁知道当前写入 Documents 和 Application Support 文件夹的方法是什么? 这是从 Xcode 6.1 编译的问题,使用 iOS SDK8.1,在 iOS7.1 和 iOS8.1 上运行

任何帮助将不胜感激

【问题讨论】:

  • 您发布的代码是正确的。路径是否不断变化并不重要。
  • 是的,因为我无法将我写入文档文件夹的文件获取到

标签: ios xcode directory documents


【解决方案1】:

如果您将路径存储在持久存储中并打算在将来的某个日期使用该路径,则应仅存储相对于应用程序的 Documents 文件夹的路径,然后在需要访问该资源时获取 Documents运行时的文件夹路径并附加资源的相对路径。

顺便说一句,当我通过 Xcode 运行我的应用程序时,我只会看到这种不断变化的沙盒路径行为。如果我直接从我的设备运行应用程序,则路径不会改变。无论如何,我总是倾向于使用相对路径而不是固定路径。我永远不会假设沙盒路径不会改变(例如,如果应用程序稍后备份和恢复,我不会假设路径不会改变)。

【讨论】:

  • 是的。我认为上面的代码是为了获得正确的文件夹。我没有在任何地方存储绝对路径,并且无论我是否在设备上运行 Xcode,都会发生这种路径更改
  • 如果您没有将路径存储在任何地方,那么我不明白您为什么关心路径是否更改,只要文件仍然存在。当我将文件保存到 Documents 然后从 Xcode 再次运行它时,路径不同,但文件仍然存在。如果找不到文件,请首先确保文件已成功保存。
  • 我重新加载应用程序时文件不存在,这就是我感到困惑的原因。当我去保存文件时,我使用 NSFileManager 的 fileExistsAtPath:isDirectory: 检查它的存在,并且文件存在并且它不是目录。当应用程序仍然打开时,我做同样的事情并且文件存在并且不是目录。当我重新加载应用程序时,该文件根本不存在。如果文件在加载之间保持不变,那很好,但不是,即使它说它保存正确
  • 哦。我看到了问题。该代码在启动时意外删除了该文件。很抱歉浪费大家的时间。
  • @Hayden 我面临同样的问题。你能建议我,如何解决这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2015-04-03
  • 2016-02-03
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多