尝试提出一些可以帮助记录firebase资源的逻辑。关于问题查了一些资源,这个问题有点类似问题而不是解决它的延伸。 SimillarQuestion。并且可用的文档没有提到任何逻辑来实现它GoogleDoc。
如何只从给定的firebase json树中获取密钥?正如他们所说,一张图片说了千言万语。有下面提到的firebase设置树。并且提到的是在表格视图中向用户显示的所需输出。
--uniUsers
|
|Fruits
| |
| |Apple:true
| |Kiwi:true
| |Orange:true
|
|Veggies
|
|Carrot:true
|Onions:true
|Lettuce:true
Swift Code
func fetchTotalUsers(){
let tempUniId = "Fruits"
let refUniId = Database.database().reference(withPath: "UniUsers/\(tempUniId)")
refUniId.observe(.value, with: { (snapp) in
print("Value><", snapp.key)
print("Key><", snapp.value!)
}
}
Swift OutPut:
Value >< Fruits
Key >< {
Apple = 1;
Kiwi = 1;
Orange = 1;
}
必需的输出
Apple
Kiwi
Orange
答案 0 :(得分:1)
您可以使用keys
属性。
来自官方文档here
键
只包含字典键的集合。
再次来自官方文件:
迭代时,键以相同的顺序出现在此集合中 因为它们出现在字典的键值对中。每个键都在 密钥集合具有独特的价值。
因此,在您的特定情况下,您可以执行以下操作:
因为你从firebase服务器获取字典
refUniId.observe(.value, with: { (snapp) in
print("Value><", snapp.key)
print("Key><", snapp.value!)
if let dict = snapp.value as? [String: Any] {
for k in dict.keys {
print(k)
}
}
}
答案 1 :(得分:0)
通过使用枚举找到我们可以一步一步地进行,但对于新手来说,选择的答案在可读性方面更有意义,除非在之前已知枚举的概念
refUniId.observe(.value, with: { (snapp) in
print("Count><", snapp.childrenCount)
let enumeratorRR = snapp.children
while let rest = enumeratorRR.nextObject() as? DataSnapshot{
print("GotRequiredFruits",rest.key)
}
}