Ich bin nicht sicher, ob die Frage beantwortet werden kann, ohne zu wissen, wie das Array aufgebaut ist. Ein Problem ist, dass die For-in-Schleifen-Variable ein NSFastEnumerationIterator ist, also muss sie auf die Art von "Sache" reduziert werden, die sie haben soll. Vielleicht hast du das getan, also ist das nur für zukünftige Referenz.
Das gesagt, ich habe etwas Code in die Hand genommen und es ein wenig abgebrochen - vielleicht wird es Sie in die richtige Richtung zeigen.
Der folgende Code liest alle Knoten mit .value ein und iteriert dann über den Snapshot und speichert jedes untergeordnete Element in einem Array als FDataSnapshot. Dann iteriert der Code über dieses Array und gibt den 'Guardian' von jedem Snapshot aus, der im Array gespeichert ist.
Ich habe auch Ihren Code die guardianID zu drucken und es funktioniert auch so meine Vermutung ist, liegt das Problem mit, wie das Array zunächst bevölkert wird oder in dieser Linie
für Snapshot in self.guardians
als der Snapshot ist ein NSFastEnumerationIterator
let ref = self.myRootRef.child(byAppendingPath: "guardian_node")!
ref.observe(.value, with: { snapshot in
if (snapshot!.value is NSNull) {
print("not found")
} else {
var guardianArray = [FDataSnapshot]()
for child in snapshot!.children {
let snap = child as! FDataSnapshot //downcast
guardianArray.append(snap)
}
for child in guardianArray {
let dict = child.value as! NSDictionary
let thisGuardian = dict["guardian"]!
print(thisGuardian)
//your code
let guardianID = (child.value as? NSDictionary)?["guardian"] as? NSString
print(guardianID!)
}
}
})
* Dies ist Swift 3 und Firebase 2.x aber das Konzept ist das gleiche .
Vielen Dank für das Posten. Das hat super funktioniert! Es war entscheidend, eine Ebene tiefer zu gehen, mit 'für Snapshot in self.guardians' und dann' für Kind in guardianArray'. Wenn ich von Parse zu Firebase gehe, dreht sich mein Kopf. Danke, dass du diese Logik für mich durchbrochen hast! – winston