2017-02-10 2 views
0

Ich bin mitten in der Programmierung einer IOS-Anwendung mit Xcode 8.2.1 in Swift. Derzeit habe ich die Datenbank für einen View-Controller eingerichtet, der GeoFire implementiert und erfolgreich Standorte zur Datenbank hinzufügt. Auf einem separaten View-Controller möchte ich einen Verweis auf die gleiche Datenbank hinzufügen und untergeordnete Objekte zu dieser Referenz hinzufügen.Wie entwerfe ich eine einfache Firebase-Datenbank, die Arrays speichert?

Diese separate Referenz Ich möchte verschiedene Arrays speichern, auf die der Array-Name zugreifen kann. Ich möchte in der Lage sein, die gespeicherten Arrays in der Datenbank hinzuzufügen und zu entfernen. Außerdem möchte ich in der Lage sein, die Strings hinzuzufügen und zu entfernen, die in jedem einzelnen Array enthalten sind.

Der Code, den ich versucht habe, ist:

let ref = FIRDatabase.database().reference() 

    let childRef = FIRDatabase.database().reference(withPath: "arrays") 

    let itemsRef = ref.child("arrays") 

    let milkRef = itemsRef.child("array1") 

Aber wenn ich diesen Code ausführen, wird die Datenbank keine neue Kinder zu zeigen, aktualisieren. Kann ich meine Aufgabe erfüllen? Wenn ja, was mache ich falsch?

Wenn meine Frage in irgendeiner Weise unklar ist, lassen Sie es mich bitte wissen, und ich werde bereit sein, zu erarbeiten. Vielen Dank im Voraus für jede Hilfe!

+0

Dieses Video kann Ihnen helfen: https://www.youtube.com/watch?v=XIQsQ2injLo –

+1

Sie schreiben gerade keine Daten. und mit 'derselben Datenbank' meinst du den gleichen NODE oder eigentlich die gesamte Firebase-Datenbank? – Jay

Antwort

2

dies lesen: Arrays are evil

Im Allgemeinen ist es am besten von ihnen zu vermeiden, da es in der Regel bessere Möglichkeiten sind Ihre Daten zu organisieren.

Hier einige Informationen:

Dieser einen Knoten namens child_node erstellt und weist einen Wert von some_value

let ref = FIRDatabase.database().reference() 
let childRef = ref.child("child_node") 
childRef.setValue("some_value") 

Ergebnisse in

root 
    child_node: some_value 

Wenn Sie den Code erneut ausführen, wird es überschreiben Sie den vorhandenen Knoten.

Im Allgemeinen ist es am bestes Knoten Namen aus den Daten distanzierten sie enthalten so etwas

let ref = FIRDatabase.database().reference() 
let childRef = ref.childByAutoId() 
childRef.setValue("some_value") 

Ergebnisse in

root 
    -Y8hjj9a99js9jd: some_value 
    -Yi00ksomosooss: some_value //the second time it's run 

erweitert und dann ein bisschen weiter

let ref = FIRDatabase.database().reference() 
let childRef = ref.childByAutoId() 
let someData = ["site": "Olympus Mons", "location": "Mars"] 
childRef.setValue(someData) 
zu gehen

Ergebnisse in

root 
    -Y88ujs9mskkms: 
     site: "Olympus Mons" 
     location: "Mars" 

Also fragst du dich dann selbst, was hat das mit Arrays zu tun?

Es ist eine bessere Möglichkeit, 'extra' Daten zu speichern.So zum Beispiel könnten Sie zu

root 
    users 
    -Yi8joiomso (uid) 
     g: xxxx 
     l: 
      0: xxx 
      1: xxx 

oder halten einen Verweis ein Benutzer Position innerhalb ihres Knoten speichern, wo sie in einem anderen Knoten sind

root 
    users 
    -Yi8joiomso (uid) 
     location: -Yiuhj89ejee 
    location 
    -Yiuhj89ejee 
     g: xxxx 
     l: 
      0: xxx 
      1: xxx 

oder die Benutzer Knoten innerhalb der Lage halten

root 
    location 
    userID 
     g: xxxx 
     l: 
      0: xxxx 
      1: xxxx 

Nicht-Array-Strukturen bieten viel mehr Flexibilität für Abfragen, Daten abrufen und organisieren von Daten.

Verwandte Themen