首页 > 解决方案 > 为什么同一张本地图片的图片地址不一样?

问题描述

当我UIImagePickerController通过此代码从中选择图像并退出文件路径时:

if let fileURL = info[.imageURL] as? NSURL {

}

图片的路径是"file:///private/var/mobile/Containers/Data/Application/3CE5CD49-4781-44B3-B021-77D745C97FDC/tmp/193E1106-30F0-4150-B230-7EC1B1EFB4B7.jpeg"

当我在Photos framework该代码的帮助下停用同一文件的文件路径时

asset.requestContentEditingInput(with: nil, completionHandler: { (editingInput, _) in
   editingInput?.fullSizeImageURL
})

图片的路径是"file:///var/mobile/Media/DCIM/108APPLE/IMG_8760.JPG"

那么为什么同一个文件的图片 URL 不同呢?

标签: swiftphotosframework

解决方案


从 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 将保持不变。

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


推荐阅读