【问题标题】:crashing found nil while unwrapping optional value [duplicate]在展开可选值时崩溃发现 nil [重复]
【发布时间】:2017-02-15 15:56:17
【问题描述】:

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

当我进入屏幕创建一个频道时,它会在展开可选值时崩溃说发现 nil。如果我返回应用程序,则通道已创建,因此我认为在更改视图控制器时它发现 nil 并且数据库中必须没有任何内容用于消息下的新通道。下面是代码及其崩溃的地方。

var channelRef: FIRDatabaseReference?

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

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

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

这个函数在视图加载时调用

【问题讨论】:

标签: swift xcode null unwrap


【解决方案1】:

您应该使用 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!,如果你希望它一直存在并且属于这种类型

【讨论】:

  • 为您的评论干杯我尝试了解决方案,但随后将上述相同的错误移至代码的第一部分。 var channelRef:FIRDatabaseReference? private lazy var messageRef: FIRDatabaseReference = self.channelRef!.child("messages") 当我将鼠标悬停在 self 上时,它将 chanel ref 显示为 nil
  • 它是nil,因为private lazy var messageRef: FIRDatabaseReference = self.channelRef!.child("messages") 不起作用,因为此时self.channelRef nil...你需要先初始化它,然后再初始化messageRef 你应该只做var messageRef: FIRDatabaseReference!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多