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

标签 ios swift filepath nsdocumentdirectory

我从 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/Documents/Downloads/pack7-3.mp4

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

如何解决这个问题?

最佳答案

从 iOS 8 开始,每次您重新启动应用程序时,应用程序沙箱的绝对 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 将像以前一样负责设置沙盒内的所有文件夹和内容。因此,尽管 SandBox 的基本 url 发生变化,但所有内容的相对 url 将保持不变。

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

关于ios - 重建应用程序时文档目录路径更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47864143/

相关文章:

iphone - NSString sizeWithFont:constrainedToSize:无法正常工作

ios - 当我从另一个 Mainstoryboard 添加 containerViews 时,导航不起作用?

windows - 文件路径中\和\\有什么区别

c++ - C++中带有变量的文件路径

iPhone 屏幕锁定后 iOS 套接字反复断开连接

ios - MKCoordinateSpan 背后的逻辑

ios - 从 XML 数据中的字符串创建类别

c - 我需要将 Windows 中的文件路径从 c :\abc\efg\mmm. txt 转换为 c :\\abc\\mm. txt?

ios - 当用户点击通知时从 UNNotificationRequest 显示 ViewController

php - 如何在另一个 Controller 上快速显示服务器在应用程序中获取的数据