Код: Выделить всё
public typealias UploadPictureCompletion = (Result) -> Void
public func uploadEventHeaderImage(with data: Data, fileName: String, completion: @escaping UploadPictureCompletion){
bucket.child("event_images/\(fileName)").putData(data, metadata: nil, completion: {metadata, error in
guard error == nil else{
//failed
print("failed to upload event image to firebase")
completion(.failure(StorageErrors.failedToUpload))
return
}
self.bucket.child("event_images/\(fileName)").downloadURL(completion: {url, error in
guard let url = url else{
print("failed to get download url from firebase")
completion(.failure(StorageErrors.failedToGetDownloadURL))
return
}
let urlString = url.absoluteString
print("download ur returned: \(urlString)")
completion(.success(urlString))
})
})
}
Код: Выделить всё
let filename = "\(eventId).png"
guard let data = headerImage.pngData() else {
return
}
StorageManager.shared.uploadEventHeaderImage(with: data,
fileName: filename,
completion: {result in
switch result {
case .success(let downloadUrl):
UserDefaults.standard.set(downloadUrl, forKey: "event_image_url")
print(downloadUrl)
case .failure(let error):
print("Storage manager error: \(error)")
}
})
Подробнее здесь: https://stackoverflow.com/questions/781 ... se-storage
Мобильная версия