嗨,我是swift的新手,我在我的应用中使用了firebase。我想从firebase数据库中获取一个子项下的所有数据并将其与已存在的数组进行比较以找到缺失的值并在tableview中加载它我添加了用于执行此操作的代码,并且每次调用for循环找到新子节点的时间,我想在从firebase数据库获取所有值后执行for循环。有什么方法可以执行此操作,或者有任何方法可以知道firebase是否已检索到所有数据。提前致谢
func fetchUsers()
{
ingredientMasterArr.removeAll()
refhandle1 = ref.child("ingredients").observeEventType(.ChildAdded, withBlock:
{ (snapshot) in
if let dictionary = snapshot.value as? [String : String]
{
let ingredients = IngredientsClass()
ingredients.id = dictionary["id"]
ingredients.ingredient_name = dictionary["ingredient_name"]
// ingredients.category
ingredientMasterArr.append(ingredients)
}
FilteredIngMasterArr.removeAll()
let temp = IngredientsClass()
for MasterID in ingredientMasterArr
{
if (ShopIngKeysArr .contains(MasterID.id!)){
print("if",MasterID.ingredient_name)
}
else
{
print("else",MasterID.ingredient_name)
temp.id = MasterID.id
temp.ingredient_name = MasterID.ingredient_name
FilteredIngMasterArr.append(temp)
}
}
self.tbl_ingMaster.reloadData()
})
}
答案 0 :(得分:1)
使用 .Value 事件类型而不是 .ChildAdded 应该立即为您提供所有结果:
refhandle1 = ref.child("ingredients").observeEventType(.Value, ...
在检索数据时阅读firebase documentation以获取更多详细信息。