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

标签 ios swift firebase firebase-realtime-database sigabrt

我正尝试从我的 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 意味着它没有找到符合您条件的值。代码为! String 的字面意思是如果值不是 String 就会崩溃。因为 NSNull 不是 String 你会崩溃。

一个解决方案:

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

任何人都可以对所有行执行此操作。另请阅读 Swift optionals和强制展开。

关于ios - 无法在 firebase 中将类型 'NSNull' 的值转换为 'NSString',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431628/

相关文章:

android - react-native-fcm 上的错误处理

ios - 清除 drawRect shape-layer 绘图中的绘图

swift - 类型 AVCaptureDevice 不符合协议(protocol)序列

ios - 具有两个自动布局标签的 TableView 单元格,在 UIViewController 中不显示所有行

swift - PINCatch Pod 中无法识别的平台名称 macOS、tvOS、iOS、watchOS

ios - 显示来自模型的警报

ios - 将 firebase 数据放入数组

ios - 模拟器崩溃 "[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'”

ios - 将 NSUserdefaults 读入 NSArray

ios - 从 firebase 检索子值到数组以在 TableView 单元格中使用