Swift 试图创建like按钮,但在隐式展开可选值时意外发现nil

Swift 试图创建like按钮,但在隐式展开可选值时意外发现nil,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,我试着做一个like按钮,但是当我试着在模拟器中按下按钮时,它会给我带来错误。如果你知道任何其他代码使like按钮更容易,这将是有帮助的(或者一些网站,yt视频) } } 我试着做一个like按钮,但是当我试着在模拟器中按下按钮时,它会给我错误。如果你知道like按钮更容易的任何其他代码,在这一行会很有帮助(或者一些网站,yt视频) ref.child("posts").child(self.postID) 导致崩溃的postID未定义。在您声明的注释中,您为其赋值,但问题中的代码不包括如何赋

我试着做一个like按钮,但是当我试着在模拟器中按下按钮时,它会给我带来错误。如果你知道任何其他代码使like按钮更容易,这将是有帮助的(或者一些网站,yt视频)

}

}

我试着做一个like按钮,但是当我试着在模拟器中按下按钮时,它会给我错误。如果你知道like按钮更容易的任何其他代码,在这一行会很有帮助(或者一些网站,yt视频)

ref.child("posts").child(self.postID)
导致崩溃的postID未定义。在您声明的注释中,您为其赋值,但问题中的代码不包括如何赋值,因此很可能没有赋值

解决方法是在该行之前为该类var赋值,如下所示

@IBAction func likePressed(_ sender: Any) {
    self.postID = "post_0" //or however you determine which post it is
                           // e.g. self.postID = getCurrentPostId()
    let ref = Database.database().reference()
    let keyToPost = ref.child("posts").childByAutoId().key
    ref.child("posts").child(self.postID)...
在尝试调用Firebase函数之前,您可能还需要执行一些基本的错误检查,以确保postID不是nil

if let postID = getCurrentPostID() {
   //perform the firebase function using postID
} else {
   //display an error 'not post selected'
}

您在哪一行收到此错误?ref.child(“posts”).child(self.postID).observeSingleEvent(of:.value){(snapshot)inar您确定
self.postID
不是空的吗?我想我必须在newsfeed控制器中声明self.postID,但我不知道如何在
ref.child(“postID”).child(self.postID)之前打印(self.postID)
.observeSingleEvent(of:.值){(快照)在中,并在崩溃前检查它的值。@isaa如果您能详细说明一下,也许可以用错误更新您的问题,它发生在哪一行,我们可能可以进一步帮助您。GitHub帐户?@isaa这不是本网站的实际工作方式,因为它不会帮助未来的读者。请记住,这是一个特定于代码的问题和解决方案的存储库不适用于该问题,因此,如果该问题包含场外代码,未来的读者将无法参考。请花一点时间查看有关提问的指南:和。使用相关代码更新您的问题,我们将进行查看!
ref.child("posts").child(self.postID)
@IBAction func likePressed(_ sender: Any) {
    self.postID = "post_0" //or however you determine which post it is
                           // e.g. self.postID = getCurrentPostId()
    let ref = Database.database().reference()
    let keyToPost = ref.child("posts").childByAutoId().key
    ref.child("posts").child(self.postID)...
if let postID = getCurrentPostID() {
   //perform the firebase function using postID
} else {
   //display an error 'not post selected'
}