Swift 为什么同一本地映像的映像URL不同?

Swift 为什么同一本地映像的映像URL不同?,swift,photosframework,Swift,Photosframework,当我从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

当我从
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不同呢?

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将像以前一样负责在沙箱中设置所有文件夹和内容。所以,尽管沙盒的基本url发生了变化,但所有内容的相对url将保持不变

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