func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
let storageRef = Storage.storage().reference().child("profileImages").child("\(NSUUID().uuidString).jpg")
guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
storageRef.putData(imageData, metadata:metaData) { (metaData, error) in
if error != nil, metaData != nil {
storageRef.downloadURL (completion: {(url, error) in
if error != nil {
if let downloadurl = url?.absoluteString {
if (self.profilePicLink == "") {
self.profilePicLink = downloadurl
Database.database().reference().child("users").child(self.uid).updateChildValues(["profilePicLink":downloadurl])
}
}
} else {
completion(nil)
}
}
)
}
}
}
Я пытаюсь назначить загружаемую фотографию из моей библиотеки, а затем назначить ее для profilePicLink. Однако, когда я выбираю pi c из моей библиотеки, он появляется во фрейме UIImage ImageView. Когда я использую эти забавные c и действия для обновления аватара, происходит ошибка
@IBAction func updateAvatar(_ sender: Any) {
uploadPhoto()
}
func uploadPhoto(){
selectedUser?.uploadProfileImage(imageView.image!){
url in print (URL.self)
}
}
После того, как я захожу в Firestore, pi c не сохраняется, и мой profilePicLink не имеет значения. Обратите внимание на это