Firebase Storage: загруженное изображение не сохраняется в приложении

Я загружаю изображение через.Camera в Firebase Storage. Когда я закрыл приложение и снова запустил это изображение, оно не сохранилось в моем приложении. Я знаю, что я что-то пропустил. Пожалуйста, скажите мне, что я должен добавить. Большое спасибо! Это мой код:

import UIKit
import Firebase
import FirebaseStorage

class PicturesOfCoinsViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBAction func saveButton(_ sender: UIButton) {
        saveOneEuroCentImage()
    }

    @IBOutlet weak var oneEuroCentImage: UIImageView!

    @IBAction func usePhotoButton(_ sender: UIButton) {

        let picker = UIImagePickerController()
        picker.sourceType = .camera
        self.present(picker, animated: true, completion: nil)
        picker.delegate = self
    }

    func saveOneEuroCentImage() {

        let storageRef = FIRStorage.storage().reference().child("userPictures/oneEuroCent.jpg")

        if let uploadData = UIImagePNGRepresentation(self.oneEuroCentImage.image!) {

            storageRef.put(uploadData, metadata: nil) {(metadata, error) in

                if error != nil {
                    print(error)
                    return
                }
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        oneEuroCentImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
        picker.dismiss(animated: true, completion: nil)
    }
}

введите описание изображения здесь

1 ответ

Если вы хотите, чтобы в вашем приложении была постоянная копия изображения, то перед загрузкой необходимо сохранить фотографию в каталоге документов вашего приложения. Исходя из приведенного выше кода, вы загружаете его только в облачное хранилище в firebase, но нет кода для локального сохранения изображения, поэтому его не существует при повторном запуске приложения. Я предлагаю вам создать путь к файлу каталога документов или URL для изображения, а затем сохранить его.

  let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let path = paths.first
let imageFolderPath = path?.appending("MyFBImages")
if !FileManager.default.fileExists(atPath: imageFolderPath!){
    do {
        try FileManager.default.createDirectory(atPath: imageFolderPath!, withIntermediateDirectories: true, attributes: [:])
    } catch let error {
        print(error.localizedDescription)
    }
}
let imageFilePath = imageFolderPath?.appending("myImageName.jpg")
let imageData = UIImageJPEGRepresentation(UIImage(), 1)
do {
    try imageData?.write(to: URL(fileURLWithPath: imageFilePath!))
} catch let error {
     print(error.localizedDescription)
}

N / B: imageData в коде, который вы можете получить из изображения, которое вы создали непосредственно перед загрузкой в ​​firebase. Это должно помочь вам сохранить ваше изображение локально. В следующий раз, когда вы запустите приложение, вы сможете получить доступ к вашим предыдущим изображениям, инициализировав UIImage из содержимого URL-адреса, в котором хранятся сохраненные фотографии. Я надеюсь, что это помогает вам.

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