Firebase 数据库 - 致命错误:在展开可选值时意外发现 nil

Posted

技术标签:

【中文标题】Firebase 数据库 - 致命错误:在展开可选值时意外发现 nil【英文标题】:Firebase Database - Fatal error: Unexpectedly found nil while unwrapping an Optional value 【发布时间】:2019-03-30 02:02:15 【问题描述】:

我正在尝试使用来自 Firebase 数据库的信息在我的 UITableViewController 的自定义单元格中填充一个标签,但我一直遇到此错误:

“线程 1:致命错误:在展开可选值时意外发现 nil”

我确实看过这个链接:What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?

我不认为我在加载前访问了插座,我确实检查了我的 IBOutlet 连接是否正确。

class FeedCell: UITableViewCell 

    @IBOutlet weak var postText: UILabel!



class FeedTableViewController: UITableViewController 

    var postInfo = FeedCell()

    override func viewDidLoad() 
        super.viewDidLoad()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
//         self.navigationItem.rightBarButtonItem = self.editButtonItem

        self.tableView.rowHeight = 100.0

//        postText = UILabel()
//
        var ref: DatabaseReference!
        ref = Database.database().reference()
        let cellRef = ref.child("post/body")

        cellRef.observeSingleEvent(of: .value)  (snapshot) in
            if let body = snapshot.value as? String 
                self.postInfo.postText.text = body
                print(body)
            
        
    

我希望使用正文“test firebase”更新标签,但我只是遇到了那个错误。是因为我在另一个类中定义了我的 IBOutlet,然后在我的 FeedTableVIewController 中引用了它吗?任何建议将不胜感激!

【问题讨论】:

首先你不应该直接访问 outlets,其次为数据创建一个模型,在 if 语句中用你从 firebase 获得的数据填充模型类型的数组,然后在cellForRowAtIndexPath 方法中你用数据配置单元格 【参考方案1】:

问题来了

var postInfo = FeedCell()

self.postInfo.postText.text = body <<< postText is nil

首先你不应该创建一个 cell 的实例变量,因为你当前的变量 postInfo 是用 FeedCell() 启动的,所以无论它是否连接,出口都是 nil

其次,您应该使用表委托和数据源方法来填充您的表

【讨论】:

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

致命错误 Firebase 快照

致命错误:在过滤时展开可选值时意外发现 nil

fetchedResultsController 核心数据致命错误:在展开可选值时意外发现 nil

Swift 错误致命错误:在展开可选值时意外发现 nil

致命错误:在展开可选值时意外发现 nil - 为啥?

为啥我收到错误:致命错误:在展开可选值时意外发现 nil?