当前位置: 首页 > 知识库问答 >
问题:

重新生成应用程序时更改文档目录路径

程凯定
2023-03-14

我从url下载视频文件,并将其保存在document目录中,路径如下:

  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/contains/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/documents/downloads/pack7-3.mp4

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

如何解决这个问题?

共有1个答案

姬正文
2023-03-14

iOS8之后,每次重新启动应用程序时,应用程序沙箱的绝对url都会发生变化。因此,您不应该保存视频的绝对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会像之前一样负责设置沙箱内的所有文件夹和内容。因此,虽然沙箱的基本url改变,但所有内容的相对url将保持不变。

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

 类似资料:
  • 问题内容: 我从url下载视频文件,并使用以下路径将其保存在文档目录中: 我的视频已下载并成功播放。但是有一个问题,当我在Xcode中重建应用程序并尝试播放我下载的最后一个视频时,视频不会显示,而当我下载一个新视频时,此保存成功地播放了。 我看过每个视频包的路径,它们是不同的。 1-文件:/// Users / myMac / Library / Developer / CoreSimulator

  • 我创建了一个新的swift项目,并在“使用核心数据”的框中打勾。我注意到,每次我构建到我的设备时,我的数据都从数据库中清除了。在跟踪代码时,我注意到每次运行应用程序时,xcode添加到应用程序委托中的核心数据的默认设置都有一个不同的url: 我猜这就是为什么我的数据一直令人失望的原因。有没有一种方法可以防止这样做,这样看起来我的数据就不会被清除了。

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

  • 我确实有以下问题。我已经将一些具有相同层次结构和网站结构的网站迁移到了一个使用Apache 2.4.7的新服务器上。旧服务器有2.2.22。我已经将默认的DocumentRoot更改为/var/www 为了进行测试,我在那里创建了一个索引.html文件,其中有一个点作为内容。现在我在 /sites-enabled/ 中确实有一个包含以下内容的文件: 这是我以前的2.2.22 Apache上的一个有

  • 我刚刚升级到High Sierra,现在我无法构建任何GoLang应用程序。我得到以下错误: 我试过了 和 但这两种方法都不管用,还有其他人遇到过这种情况吗?

  • 问题内容: 目前看来,对于sails.js应用程序中的任何代码更改,您都必须手动停止sails服务器并再次运行,然后才能看到更改。 我想知道在开发模式下运行时是否有任何方法可以在检测到代码更改时自动重新启动sails服务器? 问题答案: 您必须使用forever,nodemon或其他类似的观察器。 通过运行以下命令 永久 安装: 运行: 为了避免由于Sails写入文件夹而导致无限重启,您可以在项目