无法在 firebase 中将 'NSNull' 类型的值转换为 'NSString'

Could not cast value of type 'NSNull' to 'NSString' in firebase

我试图从我在 firebase 中的数据库中提取文章,但在此函数的 let author 部分出现 SIGABRT 错误,出了什么问题?

func getAllArticles(handler: @escaping (_ articles: [Article])-> ()){

        var articleArray = [Article]()
        REF_ARTICLES.observeSingleEvent(of: .value) { (articleMessageSnapshot) in
            guard let articleMessageSnapshot = articleMessageSnapshot.children.allObjects as? [DataSnapshot] else {return}

            for article in articleMessageSnapshot {

                let content = article.childSnapshot(forPath: "content").value as! String
                let author = article.childSnapshot(forPath: "author").value as! String
                let twitterHandle = article.childSnapshot(forPath: "twitterHandle").value as! String
                let articleTitle = article.childSnapshot(forPath: "articleTitle").value as! String

                let article = Article(content: content, author: author, twitterHandle: twitterHandle, ArticleTitle: articleTitle)
                articleArray.append(article)
            }
            handler(articleArray)
        }
    }

我对 Firebase 一无所知,但从你发布的内容来看,我认为这不是你的问题。

此代码 article.childSnapshot(forPath: "author").value 正在返回 NSNull,这意味着它没有找到符合您条件的值。代码 as! String 的字面意思是如果值不是 String 则崩溃。由于 NSNull 不是 String 你会崩溃。

一个解决方案:

let author = article.childSnapshot(forPath: "author").value as? String ?? "No Author"

任何人都可以用所有的台词来做。另请阅读 Swift optionals 和强制展开。