Firebase Swift 3 Xcode 8 - wiederhole die Beobachtungsergebnisse

8

Ich habe die Dokumente in Firebase und in Stack Overflow- und YouTube-Tutorials durchgesehen, aber ich kann herausfinden, wie ich die Daten abrufen kann, wenn ich sie über Firebase abrufe.

Ich bin neu bei Firebase und bin dabei, mein Projekt von Parse auf Firebase umzustellen.

Beispiel: Ich habe Daten in Firebase, die wie folgt aussehen:

Ich kann alle Themen in Swift dabei nehmen:

%Vor%

Wenn ich durch die for-Schleife iteriere, drucke ich Dinge, die wie folgt aussehen:

%Vor%

Mein Problem ist, wie bekomme ich die Daten:

Ich brauche den Schlüssel (KYCqk2_AVkUd8s9cKiu) Ich brauche die Beschreibung und den Namen Ich brauche ein Array von Tags

- alles in lokalen Variablen?

Grundsätzlich möchte ich nur alle Topics einlesen und ein Array von Topics im lokalen Speicher haben.

Ich kann mich um den Aufbau des Klassen-Themas kümmern, aber ich habe verschiedene Ansätze ausprobiert, um ohne Erfolg zu den Daten zu gelangen. Es muss eine einfache Möglichkeit geben, das Ergebnis zu parsen, aber ich habe kein Beispiel oder eine Dokumentation gefunden.

Ich würde mich über Hilfe oder einen Zeiger auf ein Dokument oder ein Tutorial freuen.

==================================

Aktualisierter Code

Hallo, ich habe den Code geändert, um zu versuchen, die bereitgestellte Probe zu vergleichen. Code sieht jetzt wie folgt aus Ich habe einen Loop-Zähler gesetzt, um zu sehen, was passiert und warum abstürzt.

FDataSnapshot ist nicht definiert, also habe ich FIRDataSnapshot verwendet.

Hier ist ein neuer Versuch von Code, der jetzt abstürzt. Weiter unten zeige ich meine Änderungen, damit sie nicht abstürzt - und eine Frage zum sicheren Übergeben des Tag-Subknotens . Danke für den Zeiger. Ich habe jetzt etwas, das funktioniert.

%Vor%

Ich habe Null Haltepunkte definiert - aber der Code stoppt an diesem Haltepunkt (wenn ich sicher Null Haltepunkte definiert haben)

%Vor%

... bricht hier dreimal und dann stürzt die App in dieser Zeile ab    lass dict = snap.value als! [Zeichenfolge: Zeichenfolge] mit der Nachricht "Thread 1: EXC_BAD_INSTRUCTION (code = EXEC_1386_INVOP, sublide = 0x0)

Ich bin mir nicht sicher, warum der Code Breakpoint hat und warum er abstürzt. Vielleicht ist es bei Tags hits abgestürzt, da Tags Unterknoten sind und nicht in [String, String]

passen

Ich drucke das im Logbuch aus und gehe dann zum Boom !!!

%Vor%

=====

Wenn ich die Zeile für 'Any' ändere .... dann funktioniert es

%Vor%

neuer Arbeitscode ....

%Vor%

Ich habe den Themenschlüssel aus dem Dokument gefunden, das von einer anderen Antwort gesendet wurde. Danke.

Ich bin nicht sicher, ob ich die Tag-Werte richtig erhalte. Es ist wirklich nur ein Dictionary und ich habe versucht, es so zu schreiben, aber die Laufzeit stürzt ab und möchte Tags in ein NSArray umwandeln ... also tat ich das im Code und es funktioniert, aber nicht sicher, ob das sicher ist, da dies nicht der Fall ist definiert als ein Array, obwohl es als Array zurückkommt.

    
john 05.12.2016, 18:23
quelle

3 Antworten

5

Es geht wirklich um Wörterbücher.

Gegeben ein Beispielknoten

%Vor%

Dieser Code ruft die Daten als Snapshot ab und iteriert darüber, um die Person und ihr Essen auszudrucken.

%Vor%

Der / die Elternknotennamen jedes Kindes können auch mit child.key gefunden werden.

Ein typisches Entwurfsmuster besteht darin, ein Array von Klassen (oder Dicts oder Strukturen usw.) als dataSource für eine tableView zu verwenden. Sie würden über die untergeordneten Elemente iterieren und für jede eine Klasse erstellen und diese an die tabellarische Ansicht anhängen. Wenn Sie fertig sind, tableView.reloadData, um die Benutzeroberfläche zu aktualisieren.

Es ist auch wichtig, sich daran zu erinnern, dass Firebase asynchron ist. Versuchen Sie also nicht, auf dieses Array außerhalb der Observe-Sperrung zuzugreifen oder damit zu arbeiten, bis der Code vollständig ist.

    
Jay 05.12.2016 19:19
quelle
1

Die Werteeigenschaft von FIRDataSnapshot gibt den Inhalt des Snapshots zurück als Standard Foundation Typ.

    
Morgan Chen 05.12.2016 18:25
quelle
0

Sie könnten es mit meinem SnapshotParser einfach machen.

Sie benötigen den folgenden Code, um eine schnelle Darstellung zu erhalten:

%Vor%     
Appyx 14.08.2017 15:20
quelle