控制台错误:无效的Firebase数据集值无法存储对象



我是xcode 8和swift的初学者,在下面的控制台中遇到了这个错误,请帮助我

由于未捕获的异常"InvalidFirebaseData"而终止应用程序,原因:"(setValue:(无法在profileImageUrl中存储_SwiftValue类型的对象。只能存储NSNumber、NSString、NSDictionary和NSArray类型的对象。'

这是我的代码,

let uid = user?.user.uid
let storageRef = Storage.storage().reference(forURL: "gs://instagramclone-7713a.appspot.com").child("profile_image").child(uid!)
if let profileImg = self.selectedImage, let imageData = UIImageJPEGRepresentation(profileImg, 0.1) {
storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in
if (error != nil) {
return
}
let profileImageUrl = storageRef.downloadURL(completion: { url, error in
})
let ref = Database.database().reference()
let usersReference = ref.child("users")
let newUserReference = usersReference.child(uid!)
newUserReference.setValue(["username": self.UsernameTextField.text!, "email": self.emailTextField.text!, "profileImageUrl": profileImageUrl])
})
}
})
}

您必须在downloadURL()的完成块内调用setValue()

storageRef.downloadURL(completion: { url, error in
let ref = Database.database().reference()
let usersReference = ref.child("users")
let newUserReference = usersReference.child(uid!)
newUserReference.setValue(["username": self.UsernameTextField.text!, "email": self.emailTextField.text!, "profileImageUrl": url])
})

最新更新