获取错误"Variable used within its own initial value"



我正在编写一段新的代码,允许用户将图像上传到将保存在Firebase数据库和存储中的帖子中。然后它将显示在单独的视图控制器上的UITableView中。在我想将照片网址保存到我的数据库的代码部分,我收到错误"变量在其自己的初始值内使用"。我已经查看了涵盖此问题的其他线程,当我遵循他们的建议时,我会收到一组新的错误。这是我的代码的外观以及我收到错误的地方。如果有任何建议会很棒,谢谢! 这是代码:

func postWithImageAndText() {
var imagesArray = [AnyObject]()
let postLength = textView.text.count
let numImages = imagesArray.count
let postRef = Database.database().reference().child("posts").childByAutoId()
let storageRef = Storage.storage().reference()
let uid = Auth.auth().currentUser
let pictureStorageRef = storageRef.child("users/profile/(uid)/media")
let lowResImageData = (imagesArray[0] as! UIImage).jpegData(compressionQuality: 0.50)
if(postLength>0 && numImages>0)
{
let uploadTask = pictureStorageRef.putData(lowResImageData!,metadata: nil)
{metadata,error in
if (error == nil) {
let downloadUrl = storageRef.downloadURL { (url, error) in
guard let userProfile = UserService.currentUserProfile else { return }
let childUpdates = [
"author": [
"uid": userProfile.uid,
"username": userProfile.fullname,
"photoURL": userProfile.photoURL.absoluteString
],
"text": self.textView.text!,
"picture": downloadUrl!.absoluteString,
"timestamp": ["sv.":"timestamp"]
] as [String:Any]
}
}
}
}
}

'

这部分发生错误:"picture": downloadUrl!.absoluteString,

正如我所看到的,你得到了一个"变量在其自己的初始值内使用"错误,这意味着您尝试访问该变量中变量的初始值,这不是一个好的行为。 我还看到您没有使用完成块中的任何数据,因此请尝试使用nil而不是完成块,然后尝试访问您的downloadURL变量

更新后的代码:

func postWithImageAndText() {
var imagesArray = [AnyObject]()
let postLength = textView.text.count
let numImages = imagesArray.count
let postRef = Database.database().reference().child("posts").childByAutoId()
let storageRef = Storage.storage().reference()
let uid = Auth.auth().currentUser
let pictureStorageRef = storageRef.child("users/profile/(uid)/media")
if let lowResImageData = (imagesArray[0] as! UIImage).jpegData(compressionQuality: 0.50) {
if(postLength>0 && numImages>0)
{
pictureStorageRef.putData(lowResImageData, metadata: metaData) { (metadata, error) in
if error != nil {
print("Failed to upload image:", error as Any)
}
pictureStorageRef.downloadURL(completion: { (url, error) in
if error != nil {
print(error!)
}
if let imageUrl = url?.absoluteString {
guard let userProfile = UserService.currentUserProfile else { return }
let childUpdates = [
"author": [
"uid": userProfile.uid,
"username": userProfile.fullname,
"photoURL": userProfile.photoURL.absoluteString
],
"text": self.textView.text!,
"picture": imageUrl,
"timestamp": ["sv.":"timestamp"]
] as [String:Any]
}
})
}
}
}
}

相关内容

最新更新