In meinem Firebase-Projekt versuche ich Model View Controller Muster, so dass ich den Controller und die Klasse, die Firebase-Anfragen behandelt getrennt. Ich erhalte diese AusnahmeiOS Populate Tabellenansicht mit Firebase-Daten mit MVC-Muster
Ausnahme 'NSInvalidArgumentException' Grund: ‚- [__ NSCFNumber Länge]: Unbekannter Selektor an Instanz gesendet
Ich versuche, Nachrichten aus der Datenbank zu erhalten. Hier ist das Modell
class NewsItem: NSObject{
var title: String?
var detail: String?
var photoUrl: String?
var timestamp: String?
}
Hier ist die Feuerbasis-Handler-Klasse
protocol NewsController: class {
func fetchedNews(_ newsItem: NewsItem)
}
class FirebaseHandler {
private static let _instance = FirebaseHandler()
static var Instance: FirebaseHandler{
return _instance
}
weak var newsControllerDelegate: NewsController?
func fetchNews() {
References.Instance.newsRef.observe(.childAdded) {
(snapshot: DataSnapshot) in
if let child = snapshot.value as? [String: AnyObject]{
let newsItem = NewsItem()
print("CHILD: \n\n\n\n\(child)\n\n\n")
newsItem.setValuesForKeys(child)
DispatchQueue.main.async {
self.newsControllerDelegate?.fetchedNews(newsItem)
}
}
}
}
}
Ich kann die Kind-Werten gedruckt fein, aber das Problem ist, wenn ich das Protokoll Delegatmethode nennen.
Hier sind einige Teile der View-Controller-Klassentabelle, wo ich das NewsController
Protokoll annehmen:
FirebaseHandler.Instance.newsControllerDelegate = self
FirebaseHandler.Instance.fetchNews()
Dann implementieren I die Methode:
func fetchedNews(_ newsItem: NewsItem) {
print("Item:\n\n\n\(newsItem)\n\n\n")
self.newsItems.append(newsItem)
self.tableView.reloadData()
}
Die NewsItem nicht seit dem Fehler wird gedruckt tritt auf, bevor diese Methode aufgerufen wird, denke ich. Irgendwelche Vorschläge werden geschätzt.
Das war genau das :) Vielen Dank für Ihre Hilfe. – fullMoon