文档文件夹内容 - 无法打开文件,因为没有这样的文件

Flo*_*giu 6 nsdata ios swift

上下文:Xcode 8.3.2 / Swift 3

我正在 Documents 文件夹内的子文件夹中下载一堆 MP3。然后,我通过以下方式验证成功:

  • try FileManager.default.contentsOfDirectory(atPath: folderPath) 我可以看到我的文件列出
  • 使用 Xcode,我正在执行 Window - Devices - myDevice - myApp - downloadContainer。我在我的电脑桌面上得到了一个沙箱的副本。我导航到 Documents 文件夹中的相关子文件夹,果然,我的 MP3 就在那里
  • 最后但并非最不重要的...在我的移动应用程序中,我只需选择下载的 MP3 之一并点击播放。它播放。

然后,我重新启动应用程序。没有保存的歌曲将再次播放,原因如上:无法打开文件“name_here”,因为没有这样的文件。 FileManager.default.contentsOfDirectory()仍然在那里列出它们;当我检查沙箱时,它们都在那里。

我没有想法了。想法,有人吗?

PS:错误发生在我

try Data.init(contentsOf: URL(fileURLWithPath: file_path_here))
Run Code Online (Sandbox Code Playgroud)

通常我真的不需要在内存中加载这些东西;AVPlayer 从磁盘播放它们就好了;但是,我必须先解密它们,这就是为什么我要用任何文件的内容填充“NSData”。不用说,我的解密器没有任何东西,因为...无法打开文件,因为没有这样的文件

为什么相同的代码第一次工作(当我下载它们时)但在以后的会话中失败???

Flo*_*giu -1

谢谢你的提示,rmaddy。

我想现在是星期五晚上,我累了,我应该回家了。

愚蠢之处:在保存时,某些文件的路径看起来像

"/var/mobile/Containers/Data/Application/961ED728-311E-4BDF-A599-F79CBE59A174/Documents/NameOfMyApp/some.mp3"
Run Code Online (Sandbox Code Playgroud)

这也是我在 CoreData 中坚持的,完整的绝对路径。

当应用程序重新启动时,我正在该确切路径中查找文件。但是,应用程序标识符发生了变化,我的文档文件夹现在看起来像

"/var/mobile/Containers/Data/Application/D07BF1A5-8865-4920-B96E-541D4251B553/Documents"
Run Code Online (Sandbox Code Playgroud)

我想 URL() 构造函数中的“relativeTo”参数的存在是有原因的:-)