Я пытаюсь извлечь статьи из своей базы данных в firebase, но получаю ошибку SIGABRT в части let author этой функции, что не так?
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 и принудительном разворачивании.
странная вещь была в терминале, он показывал автору как правильное значение из базы данных