当前位置: 首页 > 面试题库 >

重建应用程序时文档目录路径更改

辛才俊
2023-03-14
问题内容

我从url下载视频文件,并使用以下路径将其保存在文档目录中:

  let destination: DownloadRequest.DownloadFileDestination = { _, _ in
      let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4"
      let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
      let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true)
      let fileURL: URL = folderPath.appendingPathComponent(pathComponent)
      return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
    }

我的视频已下载并成功播放。但是有一个问题,当我在Xcode中重建应用程序并尝试播放我下载的最后一个视频时,视频不会显示,而当我下载一个新视频时,此保存成功地播放了。

我看过每个视频包的路径,它们是不同的。

1-文件:/// Users / myMac / Library / Developer / CoreSimulator / Devices /
EAC2F4CE-EA09-46C0-B403-1CE9E24B6822 / data / Containers / Data /
Application / 1D2C1F7B-E627-4898-91C1-D0AF8D5E0F1E / Documents / Downloads
/pack7-1.mp4

2-文件:/// Users / myMac / Library / Developer / CoreSimulator / Devices /
EAC2F4CE-EA09-46C0-B403-1CE9E24B6822 / data / Containers / Data / Application
/ F950E9A5-C9F3-4B8C-BCF5-647EEC233CEE /文档/下载/pack7-3.mp4

现在,我的问题是,当我们从App Store更新应用程序时,是否意味着要重新安装?这条路会改变吗?

如何解决这个问题?


问题答案:

从iOS
8开始,每次重新启动应用程序时,指向应用程序沙箱的绝对URL都会更改。因此,您绝对不应保存视频的绝对网址。保存视频的名称,并在每次重新启动应用程序时重新创建URL。

  let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4"
  let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
  let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true)
  let fileURL: URL = folderPath.appendingPathComponent(pathComponent)

一旦你有fileURL看的文件,你会发现在以前推出下载的文件。

每次用户启动应用程序时,iOS都会为应用程序创建一个新的沙箱。因此,绝对URL将非常有用。但是,iOS会像以前一样负责在沙箱中设置所有文件夹和内容。因此,尽管SandBox的基本URL发生了变化,但所有内容的相对URL都将保持不变。

因此,建议不要将绝对URL保存到任何文件夹:)希望能有所帮助



 类似资料:
  • 我从url下载视频文件,并将其保存在document目录中,路径如下: 我的视频下载并成功播放。但有一个问题,当我重建应用程序在Xcode和尝试播放我下载的最后一个视频时,视频不显示,而当我下载一个新的视频,这保存和播放成功。 我看过每个视频捆绑路径,它们是不同的。 1-文件:///users/mymac/library/developer/coresimulator/devices/eac2f4

  • 尝试运行spring项目时出现以下错误: 我认为这个错误可能是由于某些依赖项的版本冲突造成的,但我不是很确定。这是我的第一个Spring项目。 这是我更新的pom。xml文件 如果您发现任何错误,请随时指出并解释原因。尽可能多地学习。

  • 我正在创建一个Yii 2应用程序,并在Heroku上尝试 文档根应该是该应用程序的web/文件夹 这就是我尝试过的: 在该应用程序的根中创建Procfile 在配置文件夹中创建web-boot.sh 在config文件夹中,我创建了“httpd”文件夹,并在该文件夹中创建了“default.conf” 当我部署应用程序时,会出现以下错误: 当我检查日志时: 如何解决这个问题?我一点也不懂那个文件,

  • 我的程序从不是项目根目录的位置读入文档。文档包含一个相对路径。当程序应用该路径时,它确实从项目的根目录开始。如何使其应用来自文档原始位置的路径? 以下是细节。有点长,但很简单。 我在Eclipse中有一个Java项目,位于 该程序运行一个XSL转换,该转换以Schematron模式作为输入,并产生一个新的XSLT样式表作为输出 它包含这一行,还有几条类似的: 如果从模式的位置开始,并应用该相对路径

  • 我的Gradle和Android Studio有问题。我重新安装了Android Studio,我正在使用libGDX,然后当我尝试编译我的项目时,终端告诉我。 失败:构建失败,但有例外。 > 出错原因:无法使用BuildScopeServices.createScriptPluginFactory()创建ScriptPluginFactory类型的服务。无法使用BuildSessionScope

  • 问题内容: 我正在尝试将目录添加到应用程序运行配置文件的类路径中 如果在VM设置中使用覆盖,则会出现以下错误: 关于如何为我的项目的类路径添加目录的任何想法吗? 问题答案: 在Intellij 13中,看起来又有些不同。以下是Intellij 13的说明: 单击项目视图,或通过单击窗口左边框上的“ 1:项目”按钮或按Alt + 1取消隐藏 找到你的项目或子模块,然后单击以突出显示它,然后按F4,或