2016-08-05 1 views
0

Ok je recieving un aperçu de ma base de données Firebase, voici mon code et ce que je suis recieving:Swift. Comment obtenir des données spécifiques à partir d'un instantané de la base de données Firebase

rootRef.child("Battles").queryOrderedByChild("Player1").queryEqualToValue(CurrentFBID).observeSingleEventOfType(.Value, withBlock: { snap in 
    if (snap.value is NSNull) { 
     print("none") 
    } else { 
     print(snap.value) 
    } 
}) 

RECEVOIR:

{

"04361D33-AC99-4795-BB9A-0B0879882251" =

{

BattleUUID = "04361D33-AC99-4795-BB9A-0B0879882251";

Player1 = 10210238266903604;

Player2 = 12121212121212;

Score = "0-0";

Turn = 1;

};

}

Mon arbre JSON:

{ 
    "Battles" : { 
    "04361D33-AC99-4795-BB9A-0B0879882251" : { 
     "BattleUUID" : "04361D33-AC99-4795-BB9A-0B0879882251", 
     "Player1" : "10210238266903604", 
     "Player2" : "12121212121212", 
     "Score" : "0-0", 
     "Turn" : "1" 
    }, 
    "07261D43-GC59-4795-BB9A-0B0871635751" : { 
     "BattleUUID" : "04361D33-AC99-4795-BB9A-0B0879882251", 
     "Player1" : "1342536342535", 
     "Player2" : "1524343564", 
     "Score" : "3-1", 
     "Turn" : "5" 
    } 
    } 
} 

Comment puis-je diviser les données de façon un exemple:

let player1 = snap.Player1.value 
let player2 = snap.Player2.value 
let battleUUID = snap.BattleUUID.value 
let score = snap.Score.value 
let turn = snap.Turn.value 
+0

Alors, quelle est votre requête? Vous voulez seulement les données 'player1' et' player2' et pas le reste? – triandicAnt

+0

Je viens de mettre à jour ma question, désolé pour ma mauvaise explication. Je veux toutes les données, mais je veux diviser les données en différentes constantes – Benja0906

Répondre

0

Vous recevez toutes les données à la fois. Le snap contient children et chaque child appartient à une bataille particulière. Pour obtenir les données correspondant à chaque enfant que vous devez itérer sur children de snap comme:

for item in snap.children { 
    let player1 = item.value?["Player1"] as! String 
    let player2 = item.value?["Player2"] as! String 
    let battleUUID = item.value?["BattleUUID"] as! String 
    let score = item.value?["Score"] as! String 
    let turn = item.value?["Turn"] as! String 
} 
+0

Quand je fais cela, je renvoie une erreur: "erreur fatale: trouvé de manière inattendue nil tout en déballant une valeur optionnelle – Benja0906

+0

C'est parce que l'un de vos' propriété' est 'nil' essaie d'utiliser'? 'istead de'! 'comme -' let player1 = item.value? ["player1"] as? String' – triandicAnt

+0

Maintenant, il retourne juste "nil", pas ce qu'il est censé faire – Benja0906