我试图从firebase检索数据,将其存储在一个数组中,然后将其用作另一个firebase查询的引用。不幸的是,我似乎无法让它正常工作。底部的打印功能始终为空。我试图在for循环之后调用每个连续的函数,但我可能做错了。
我在firebase中有2个分支,看起来有点像这样:
-id
|
Group1
|
ID01: Created on 01.01.16
-idDetails
|
ID01
//name: name01
//description: description01
这是我的代码:
var array = [String]()
var id = [String]()
var items = [Item]() //Item Class Array
override func viewDidLoad() {
super.viewDidLoad()
getIdFromFirebase()
}
//first task
func getIdFromFirebase(){
for index in array //index is being used as part of path query
{
FireDbase_Main.child("Group1").child("id").child(index).observe(FIRDataEventType.childAdded, with: { (snapshot) in
self.id = (snapshot.key)
id.append(id)
})
getDataForItems()
}
}
//second task
func getDataForItems() {
let newItem = Item()
for index in id //i is being used as part of path query
{
FireDbase_Main.child("idDetails").child(index).observeSingleEvent(of: .value, with: { (snapshot) in
newItem.itemID = snapshot.key
newItem.name = (snapshot.value as! NSDictionary)["name"] as! String
newItem.desc = (snapshot.value as! NSDictionary)["description"] as! String
self.items.append(newItem)
}
printItemsArray(
}
//3rd Task: For now I have put a print here just as a placeholder task.
func printItemsArray(){
print(items.map {$0.itemID})
print(items.map {$0.name})
print(items.map {$0.desc})
}