Почему URL-адрес изображения для одного и того же локального изображения отличается? - PullRequest
0 голосов
/ 23 октября 2019

Когда я выбираю изображение из 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-адреса изображения для одного и того же файла отличаются?

1 Ответ

1 голос
/ 23 октября 2019

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-адреса SandBox, относительные URL-адреса всего содержимого останутся без изменений.

Поэтому рекомендуется никогда не сохранять абсолютный URL-адрес в какой-либо папке :) Надеюсь, это поможет

...