【发布时间】:2020-05-09 02:26:33
【问题描述】:
我正在编写一段新代码,允许用户将图像上传到将保存在 Firebase 数据库和存储中的帖子。然后它将显示在单独的 Viewcontroller 上的 UITableView 中。在我想将照片 url 保存到我的数据库的代码部分,我收到一个错误“变量在其自己的初始值内使用”。我查看了涵盖此问题的其他线程,当我遵循他们的建议时,我得到了一组新的错误。这是我的代码的外观以及出现错误的位置。如果有什么好的建议,谢谢! 下面是代码:
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,
【问题讨论】:
-
邮政编码作为文本,而不是作为图像。您可以写评论,例如指出任何错误等。请更新问题。
-
哪一行出现错误?是不是让downloadUrl ...。您能否发布代码,而不是图像,以便可以测试花括号是如何平衡的。可以推断闭包的返回类型 { metadata, error in ... 还是需要显式 { (metadata, error) -> SomeType in ...
-
@JoakimDanielson 代码已按要求发布。
-
在你得到错误的闭包中你有一个参数
url,也许你应该使用这个参数而不是downloadUrl?
标签: swift xcode firebase-realtime-database error-handling