Как сохранить изображение и его путь, а затем использовать его позже для загрузки с помощью 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, изменится.

Другие вопросы по тегам