Как сохранить изображение и его путь, а затем использовать его позже для загрузки с помощью swift?
У меня есть приложение, которое хранит квитанции. Это работает так: вы сохраняете изображение с помощью приложения, а затем загружаете его в Amazon S3 Bucket. Для загрузки на amazon s3 вам нужен его локальный путь.
Итак, вот что я делаю.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
receiptImageView.image = image
Model.sharedModel.currentImage = image
print(info)
}
self.dismiss(animated: true, completion: nil)
//MAking the localpath of the image
let imageAWSName = "ios_" + NSUUID().uuidString + ".jpg"
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let photoURL = NSURL(fileURLWithPath: documentDirectory)
let localPath = photoURL.appendingPathComponent(imageAWSName)
if !FileManager.default.fileExists(atPath: localPath!.path) {
do {
try UIImageJPEGRepresentation(image, 1.0)?.write(to: localPath!)
Model.sharedModel.currentlocalpath = localPath
print("file saved")
}catch {
print("Error saving receipt photo local path")
}
}
else {
print("Error - localpath already exists")
}
Путь выглядит так -
file:///Users/Al/Library/Developer/CoreSimulator/Devices/FE04FF78-914B-4224-A84B-D10521E0F845/data/Containers/Data/Application/115C6A1B-E61F-4082-AA59-4674D87DF31E/Documents/ios_5AB04F97-32C9-441E-97C8-44D4D2725ADD.jpg
Теперь это работает, если выгрузить квитанцию сразу в корзину S3. Но если я закрою приложение и перезагрузлю его, оно не будет работать.
Я думаю, это потому, что FE04FF78 меняется каждый раз, когда вы запускаете приложение. Если это так, как я могу получить путь к изображению?
2 ответа
Вы должны только сохранять имя файла и извлекать путь к документу каждый раз, когда вам нужно, и добавлять к имени файла
Поскольку путь к документу меняется каждый раз, когда запускается новый экземпляр приложения
Вы должны только сохранить свое имя файла или любую подпапку в Documents
если нужно. Если вы просто открываете приложение со своего устройства, оно должно работать нормально. Однако каждый раз, когда ваше приложение компилируется (вы отлаживаете / запускаете приложение из XCode), UUID, в этом случае FE04FF78-914B-4224-A84B-D10521E0F845
, изменится.