Itérer sur instantané enfants dans Firebase
J'ai un Firebase ressource qui contient plusieurs objets et je tiens à le répéter sur leur utilisation de Swift.
Ce que j'ai prévu de travailler est la suivante (selon la Firebase documentation)
https://www.firebase.com/docs/ios-api/Classes/FDataSnapshot.html#//api/name/children
var ref = Firebase(url:MY_FIREBASE_URL)
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
println(snapshot.childrenCount) //I got the expected number of items
for rest in snapshot.children { //ERROR: "NSEnumerator" does not have a member named "Generator"
println(rest.value)
}
})
De sorte qu'il semble qu'il y ait un problème avec Swift itération sur la NSEnumerator objet renvoyé par Firebase.
Aide est vraiment la bienvenue.
Vous devez vous connecter pour publier un commentaire.
Si j'ai lu le la documentation droit, c'est ce que vous voulez:
Une meilleure façon pourrait être:
La première méthode nécessite la
NSEnumerator
pour retourner un tableau de tous les objets qui peuvent ensuite être énuméré dans la manière habituelle. La deuxième méthode permet d'obtenir les objets un à un à partir de laNSEnumerator
et est probablement plus efficace.Dans les deux cas, les objets énumérés sont
FIRDataSnapshot
objets, de sorte que vous besoin de moulages, de sorte que vous pouvez accéder à lavalue
propriété.À l'aide de
for-in
boucle:Depuis la rédaction de l'original de la réplique de retour dans Swift 1.2 jours, la langue a évolué. Il est maintenant possible d'utiliser un
for in
boucle qui travaille directement avec les agents recenseurs aveccase let
d'affecter le type:J'ai juste converti la réponse ci-dessus à Swift 3:
Une meilleure façon pourrait être:
print(rest.value)
imprimeOptional(0)
il devrait plutôt être l'impression d'un nombre entier. Comment puis-je faireprint(rest.value)
pour imprimer un nombre entier?C'est assez lisible et fonctionne très bien:
childSnapshotForPath
, chaque enfant est déjà un enfant instantané.Firebase 4.0.1
Si vous avez plusieurs clés/valeurs, et que vous voulez
return
unarray
avecdictionary
éléments, déclarer un tableau:puis changement de bloc de corps à ceci: