2016-08-11 4 views
0

Я запускаю вложенный запрос в Firebase (используя Swift). Это возвращает два моментальных снимка. Обычно я сохраняю результат запроса в словаре, когда есть только один снимокКак слить два моментальных снимка Firebase

var query1 = [FIRDataSnapshot]! = [] 
query1.append(snapshot) 

Кто-нибудь знает, как объединить два снимка, чтобы создать единую словарные? блоков выглядеть следующим образом:

_refHandle = FirebaseRef.child("query1key").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in 
    let key2 = snapshot.value?.objectForKey("key2") as! String 
    self.FirebaseRef.child("query2key").child(key2).observeSingleEventOfType(.Value, withBlock: { (snapshot2) in 
     // merge the two snapshots 
    }) 
}) 
+0

_refHandle = FirebaseRef.child ("query1key") observeEventType (.ChildAdded, withBlock:.?! {(Снимок) -> Пустота в пусть key2 = snapshot.value .objectForKey ("key2"), как FirebaseRef .child ("query2key"). child (key2) .observeSingleEventOfType (.Value, withBlock: {(моментальный снимок) в –

+0

Не так, отредактируйте свою запись с ней, ее очень трудно прочитать в комментариях, также опубликуйте свою древовидную структуру JSON там – Dravidian

ответ

1

После того как снимки доступны, вы можете принять необходимые значения из них и создать новый объект на основе этой информации.

class MergedObject { 
    var value1: String! 
    var value2: String! 

    init(value1: String!, value2: String!) { 
     self.value1 = value1 
     self.value2 = value2 
    }   
} 

Затем добавьте этот объект в словарь.

_refHandle = FirebaseRef.child("query1key").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in 
    let key2 = snapshot.value?.objectForKey("key2") as! String 
    self.FirebaseRef.child("query2key").child(key2).observeSingleEventOfType(.Value, withBlock: { (snapshot2) in 
     var value1 = snapshot.childSnapshotForPath("value1").value as! String 
     var value2 = snapshot2.childSnapshotForPath("value1").value as! String 
     var mergedObject = MergedObject(value1: value1, value2: value2) 
    }) 
}) 
+0

Спасибо. Я в основном пришел к тому же выводу, что его нужно было обработать за пределами моментального снимка. –