Swift 如何从firebase实时数据库读取数据
如何从Firebase数据库读取数据? 我有实时firebase数据库和以下json文件Swift 如何从firebase实时数据库读取数据,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,如何从Firebase数据库读取数据? 我有实时firebase数据库和以下json文件 { "Category" : { "Breakfast" : { "CategoryImg" : "Breakfast-img", "CategoryName" : "Breakfast" }, "Gluten-Free" : { "CategoryImg" : "Gluten-free-img", "CategoryName" :
{
"Category" : {
"Breakfast" : {
"CategoryImg" : "Breakfast-img",
"CategoryName" : "Breakfast"
},
"Gluten-Free" : {
"CategoryImg" : "Gluten-free-img",
"CategoryName" : "Gluten-free"
},
"Lunch" : {
"CategoryImg" : "Lunch-img",
"CategoryName" : "Lunch"
},
"Popular" : {
"CategoryImg" : "Popular-img",
"CategoryName" : "Popular"
},
"Trending" : {
"CategoryImg" : "Trending-img",
"CategoryName" : "Trending"
},
"Vegetarian" : {
"CategoryImg" : "Vegetarian-img",
"CategoryName" : "Vegetarian"
}
}
}
我正在使用此代码检索详细信息
// 1
let rootRef = Database.database().reference()
// 2
let childRef = Database.database().reference(withPath: "Category")
// 3
let itemsRef = rootRef.child("Category")
// 4
let breakfastRef = itemsRef.child("Breakfast")
// 5
print(rootRef.key)
print(childRef.key)
print(itemsRef.key)
print(breakfastRef.key)
但我在控制台中得到了以下信息。有人能帮忙吗
nil
Optional("Category")
Optional("Category")
Optional("Breakfast")
我正在学习本教程,但我无法获得相同的结果
下面的代码在代码中说明了它将打印什么:
不可能(或者至少对我来说不可行)说出结果不同的原因。这可能是SDK行为的改变,也可能是Swift行为的改变,但同样的,这篇文章在显示输出时也有一些自由,将重点放在了它的Firebase方面,而不是Swift方面
但是,让我们重点讨论这些差异,以及如何在应用程序中处理它们
区别在于:
- 第一个
为您打印print(rootRef.key)
,同时根据教程打印nil
虽然Swift SDK的Firebase文档没有具体说明根的键,但Android SDK的文档说明了以下内容: 此快照的源位置的键名,如果此快照指向数据库根目录,则为空 我很快进行了测试,JavaScript和Android SDK确实也打印了“”
换句话说:您看到的行为是预期的:因为您正在打印数据库根的键,所以值是null
/nil
null
- 您的其他按键打印为
,而本教程仅打印可选()
这也是预期的行为。由于(如第一个print语句所示)键可以是
或值,因此它的类型是nil
。当您打印可选字符串时,Swift将其打印为可选的
(如第一行所示)或nil
如果您只想像本教程中那样打印值,您可以使用optional()
(如果您确定键不指向根),或者print(childRef.key!)
有关打印选项的详细信息,请参阅print(rootRef.key??“nil”)
从firebase检索数据。观察并打印快照。或者更好的办法是,把它放到字典里打印出来。本教程实际上演示了如何执行此操作。我正在尝试打印CategoryImg字段的值。我已经做了以下打印(breakfastRef.value(forKey:“CategoryImg”)
,但没有运气。应用程序崩溃。我猜print(childRef.key!)
没有正确地从数据库检索数据。
// 5
print(rootRef.key) // prints: ""
print(childRef.key) // prints: "grocery-items"
print(itemsRef.key) // prints: "grocery-items"
print(milkRef.key) // prints: "milk"