Swift Firebase存储和存储问题;数据库
我有一个应用程序,带有Swift Firebase存储和存储问题;数据库,swift,firebase,firebase-realtime-database,firebase-storage,image-compression,Swift,Firebase,Firebase Realtime Database,Firebase Storage,Image Compression,我有一个应用程序,带有UpdateProfileViewController(iOS应用程序,用Swift编写)。我使用Firebase存储和数据库作为后端。我面临的问题是,我有两个图像需要上传到Firebase存储,然后获取下载URL并将其输入该特定用户的数据库中。现在,我面临三个问题 downloadURL方法应返回指向存储器中上载图像的URL,并将其分配给变量storageHeaderDownloadedURL,另一个变量是headerImgDownloadedURL(这些应该是标题和配置
UpdateProfileViewController
(iOS应用程序,用Swift编写)。我使用Firebase存储和数据库作为后端。我面临的问题是,我有两个图像需要上传到Firebase存储,然后获取下载URL并将其输入该特定用户的数据库中。现在,我面临三个问题
downloadURL
方法应返回指向存储器中上载图像的URL,并将其分配给变量storageHeaderDownloadedURL
,另一个变量是headerImgDownloadedURL
(这些应该是标题和配置文件图像) @IBAction func savePressed(_ sender: UIBarButtonItem)
{
updateUserProfile()
}
func updateUserProfile ()
{
if let userID = FIRAuth.auth()?.currentUser?.uid
{
// Note: Storage references to profile images & profile headers folder
let storageUserProfileID = Storage.storage.profile_images.child(userID)
let storageUserHeaderID = Storage.storage.profile_headers.child(userID)
guard let imageProfile = profileImage.image else { return }
guard let headerImage = headerImage.image else { return }
var storageProfileDownloadedURL: String = ""
var storageHeaderDownloadedURL: String = ""
if let newProfileImage = UIImagePNGRepresentation(imageProfile), let newHeaderImage = UIImagePNGRepresentation(headerImage)
{
storageUserProfileID.put(newProfileImage, metadata: nil, completion: { (metadata, error) in
if error != nil
{
showAlert(title: "Oops!", msg: (error?.localizedDescription)!, actionButton: "OK", viewController: self)
return
}
// Get the URL from the storage
storageUserProfileID.downloadURL(completion: { (url, error) in
if error != nil
{
showAlert(title: "Oops!!!", msg: (error?.localizedDescription)!, actionButton: "OK", viewController: self)
return
}
if let profileImgDownloadedURL = url?.absoluteString
{
storageProfileDownloadedURL = profileImgDownloadedURL
}
})
})
storageUserHeaderID.put(newHeaderImage, metadata: nil, completion: { (metadata, error) in
if error != nil
{
showAlert(title: "Oops!", msg: (error?.localizedDescription)!, actionButton: "OK", viewController: self)
return
}
// Get the URL from the storage
storageUserHeaderID.downloadURL(completion: { (url, error) in
if error != nil
{
showAlert(title: "Oops!!!", msg: (error?.localizedDescription)!, actionButton: "OK", viewController: self)
return
}
else
{
if let headerImgDownloadedURL = url?.absoluteString
{
storageHeaderDownloadedURL = headerImgDownloadedURL
}
}
})
})
//Note: Update the info for that user in Database
}
guard let newDisplayName = self.displayNameTextField.text else { return }
guard let newLocation = self.locationTextField.text else { return }
guard let newDescription = self.bioTextField.text else { return }
guard let newWebsite = self.websiteTextField.text else { return }
guard let newBirthday = self.birthdayTextField.text else { return }
let newUpdatedUserDictionary = ["imageProfile": storageProfileDownloadedURL,
"imageHeader" : storageHeaderDownloadedURL,
"description" : newDescription,
"location": newLocation,
"displayName": newDisplayName,
"website": newWebsite,
"birthday": newBirthday,
]
Database.dataService.updateUserProfile(uid: userID, user: newUpdatedUserDictionary)
print("Successfully updated!")
showAlert(title: "Profile updated", msg: "YAASS", actionButton: "OK", viewController: self)
}
}