Как передать фотографию в словарь при загрузке изображения в firebase

Я написал приложение с видеокурса. Хочу его модифицировать. Моя задача заключается в том, что пользователь дает комментарий (в виде изображения) и он передается в словарь для загрузки изображения в хранилище firebase

dictionary

struct Tweet: Identifiable {
    let id: String
    let username: String
    let profileImageUrl: String
    let fullname: String
    let caption: String
    let retweet: UIImage?
    let likes: Int
    let uid: String
    let timestamp: Timestamp
     
    init(dictionary: [String:Any]) {
        self.id = dictionary["id"] as? String ?? ""
        self.username = dictionary["username"] as? String ?? ""
        self.profileImageUrl = dictionary["profileImageUrl"] as? String ?? ""
        self.fullname = dictionary["fullname"] as? String ?? ""
        self.caption = dictionary["caption"] as? String ?? ""
        self.retweet = dictionary["retweetimage"] as? ???????
        self.likes = dictionary["likes"] as? Int ?? 0
        self.uid = dictionary["uid"] as? String ?? ""
        self.timestamp = dictionary["timestamp"] as? Timestamp ?? Timestamp(date: Date())
    }

UPLOAD FUNCTION

func uploadRetweet(retweet: UIImage) {
        guard let user = AuthViewModel.shared.user else { return }
        
        let docRef = COLLECTION_RETWEETS.document()
        
        let data: [String: Any] = ["uid": user.id,
                                   "retweetimage": retweet,
                                   "fullname":user.fullname,
                                   "timestamp": Timestamp(date: Date()),
                                   "username": user.username,
                                   "profileImageUrl": user.profileImageUrl,
                                   "likes": 0,
                                   "id": docRef.documentID]
        
        docRef.setData(data) { _ in
            self.isPresented = false
            
        }
    }

Call Function

Button(action: {
                    print("DEBUG: HERE WILL BE RETWEET UPLOAD")
                    viewModel.uploadRetweet(retweet: ?)
                }, label: 

Ответы (1 шт):

Автор решения: Oleg Soloviev

При сохранении retweet нужно перевести в формата Data, используя встроенную функцию UIImage pngData, вот так например:

"retweetimage": retweet.pngData()

А при загрузке извлечь данные:

self.retweet = UIImage(data: dictionary["retweetimage"] as? Data ?? Data())
→ Ссылка