我从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看的文件,你会发现在以前推出下载的文件。
fileURL
每次用户启动应用程序时,iOS都会为应用程序创建一个新的沙箱。因此,绝对URL将非常有用。但是,iOS会像以前一样负责在沙箱中设置所有文件夹和内容。因此,尽管SandBox的基本URL发生了变化,但所有内容的相对URL都将保持不变。
因此,建议不要将绝对URL保存到任何文件夹:)希望能有所帮助