172 похожих чатов

Доброго времени! пытаюсь сохранить ImageView локально в .documentDirectory и в

Firebase. В Firebase сохраняет и все гуд. А локально... в общем когда перегружаю риложение, изображение пропадает. Дайте рекомендации по решению. Заранее благодарю!
Код ниже:

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
// picker.allowsEditing = true
}

func saveOneEuroCentImage() {

//09.04.2017
// save localy

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("oneEuroCent.jpg")
let imageData = UIImageJPEGRepresentation(UIImage(), 1)
do {
try imageData?.write(to: URL(fileURLWithPath: imageFilePath!))
} catch let error {
print(error.localizedDescription)
}
// save to Firebase

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

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

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

// storageRef.put(uploadData, metadata: nil, completion: { (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 ответов

8 просмотров

Не нужно изображение сохранять в Firebase, только путь к нему. Логика простая: - читаешь загруженное пользователем изображение - сохраняешь (например в documents) - создаешь запись в firebase (imageKey: imagePath) - когда нужно прочитать изображение (убиваешь апп, открываешь заново), то находишь запись из firebase по imageKey и по imagePath вытаскиваешь картинку. * Note: не пытайся тестить это при запуске проекта через Xcode, посмотри что он отдаёт как путь к documents, он новый (разный id внутри пути) при каждом новом запуске (Build) проекта. * Note 2: Вынеси логику отвечающую за сохранение и чтение картинки в отдельный сервис. Также вынеси логику работы с базой данный в отдельный сервис. Почитай про Dependency Injection.

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Карта сайта