swift - 解包可选值时崩溃发现 nil

标签 swift xcode null unwrap

大家好,我正在使用 firebase 创建一个聊天应用程序。

当我到达屏幕创建一个 channel 时,它崩溃并说在展开可选值时发现为零。如果我返回应用程序, channel 已创建,因此我认为更改 View Controller 时发现为零,并且消息下的新 channel 的数据库中一定没有任何内容。下面是代码及其崩溃位置。

var channelRef: FIRDatabaseReference?

private lazy var messageRef: FIRDatabaseReference = self.channelRef!.child("messages")

然后它就在这里崩溃了...

private func observeMessages() {
    messageRef = channelRef!.child("messages")

此函数在 View 加载时调用

最佳答案

您应该使用和 if let 代替强制解开包装,如下所示:

if let channelRef = channelRef {
     messageRef = channelRef.child("messages")
} //maybe add an else and do some logic if value is not there

或者,如果您希望它始终存在并且属于这种类型,您可以声明 var channelRef: FIRDatabaseReference!

关于swift - 解包可选值时崩溃发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254150/

相关文章:

ios - NumberFormatter 无法正常工作

ios - 导入我的自定义模块/框架 Xcode Swift

Swift:如何像 iOS 13 的 Book 应用程序一样为 PDF 实现标记(注释)?

null - 在调用方法或函数中在哪里检查空值?

javascript - C#中最短的空检查

ios - Instagram-API 集成认证

ios - Swift 相当于 PackageInfo 和 ApplicationInfo

ios - 如何在 Xcode 模拟器中关闭 iPhone X 的电源?

swift - 我试图将变量从 UITabController 传递到 UIViewController 但没有运气?

c - 函数 malloc 返回 NULL...但仅限前 10 次