读取 Firebase 数据:线程 1:致命错误:在展开可选值时意外发现 nil

Posted

技术标签:

【中文标题】读取 Firebase 数据:线程 1:致命错误:在展开可选值时意外发现 nil【英文标题】:Reading Firebase Data: Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value 【发布时间】:2018-06-27 05:27:49 【问题描述】:
import Firebase
import FirebaseAuth
import FirebaseDatabase

let userID = Auth.auth().currentUser?.uid
var ref: DatabaseReference!

ref.child("users").child(userID!).observeSingleEvent(of: .value, with:  (snapshot) in
  let value = snapshot.value as? NSDictionary
  let username = value?["username"] as? String ?? ""
  let user = User(username: username)
  print(username)
  )  (error) in
    print(error.localizedDescription)

我从 Firebase 教程中复制了代码,但得到:“线程 1:致命错误:在展开可选值时意外发现 nil”

如果我把代码改成:

ref?.child("users").child(userID!).observeSingleEvent(of: .value, with:  (snapshot) in
  let value = snapshot.value as? NSDictionary
  let username = value?["username"] as? String ?? ""
  let user = User(username: username)
  print(username)
  )  (error) in
    print(error.localizedDescription)

username 不打印。 我该如何解决?检索数据的最佳方式是什么?

【问题讨论】:

任何感叹号都可能导致崩溃。根据代码refnil 您可以将 print (username) 移到 let user = User(username: username) 语句上方吗? @stevenpcurtis 这没什么区别。数据库引用实例未分配给ref 【参考方案1】:

你的 ref 变量应该是

var ref = Database.database().reference()

【讨论】:

非常感谢 Elhoej!这就是解决方案!

以上是关于读取 Firebase 数据:线程 1:致命错误:在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

线程 1:致命错误:索引超出范围

SwiftUI 线程 1:致命错误:未找到类型为 SessionStore 的 ObservableObject

错误本质上是致命的......对于进程或线程?

Firebase iOS Swift 致命错误:NSArray 元素无法匹配 Swift Array 元素类型

致命错误:无法使用 [] 进行读取

Firebase,地图错误:libc 致命信号 libart.so FinalizerDaemon