2017-08-31 4 views
0

Ich verwende Firebase für iOS-Bibliothek, um ein Array von untergeordneten Elementen aus der Datenbank zu laden.Wie kann ich vom Swift-Debugger auf verschachtelte Objekteigenschaften zugreifen

Ich bin Speichern der snap.value in einem NSMutableDictionary wie folgt:

var list=NSMutableDictionary() 
let students = FIRDatabase.database().reference().child("students") 
students.observe(.childAdded) { (snap:FIRDataSnapshot) in 
     self.list[snap.key] = snap.value 
} 

Als ich in der letzten Zeile einen Haltepunkt setzen, ich den Inhalt list Variable untersuchen kann, und es enthält erfolgreich alle 8 Kinder von Feuerbasis .

enter image description here

vom Debugger, habe ich versucht, dies:

(lidb) po list.count 
>> 8 

Also habe ich versucht, den Namen/Alter von Element abzurufen 3 durch Eingabe von:

(lidb) po list[3] 
>> nil 

(lidb) po list[3]["value"]["name"] 
>> error: <EXPR>:3:8: error: type 'Any?' has no subscript members 

(lldb) po (list[3] as? Dictionary<String,Any?>) 
>> nil 

(lldb) po (list[3] as? Dictionary<String,Any?>)["value"] 
>> nil 

Was soll ich tun falsch?

Antwort

0

Es ist ein Wörterbuch, also sollten Sie mit dem Schlüssel darauf zugreifen, nicht mit dem Index (obwohl der Debugger die Indizes anzeigt, die ihn wie ein Array aussehen lassen).

+0

aber ich möchte alle Elemente im Wörterbuch durchlaufen, ohne den Schlüssel verwenden zu müssen. Gibt es einen Weg? – Ahmad

+0

Wenn ich mich richtig erinnere, sollte dies mit 'for (key, value) in dict) {...} möglich sein – DMan

Verwandte Themen