无法在 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 和强制展开。
我试图从我在 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 和强制展开。