Как передать фотографию в словарь при загрузке изображения в 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())