【问题标题】:Get a specific data from database and print it从数据库中获取特定数据并打印
【发布时间】:2017-11-29 00:30:54
【问题描述】:

我想从 Firebase 数据库中获取具有子名称“totalExercise”的特定值并使用 swift 打印它。这是firebase数据库的当前内容。

这是我在 swift 中尝试获取并打印 totalExercise 值的代码

【问题讨论】:

  • 我认为这是因为您的节点标题实际上是可选的。这本身不是问题,但是当您使用 (user?.uid) 查询 Firebase 时,您正在解开它!
  • 将来,请使用您的 Firebase 结构和代码的文本版本而不是屏幕截图,以便我们可以在答案中使用它,而无需重新输入。您可以使用 Firebase Console->Export JSON 将 Firebase 作为文本获取,然后您可以在问题中复制/粘贴您的结构和代码。
  • @Paulo 是的,你是对的。非常感谢。
  • @Jay 是的,我下次会以文字形式发布。这是我第一次在这里发布问题,所以我对这里的习惯并不熟悉,但是感谢您的反馈。我会记住的。

标签: swift firebase firebase-realtime-database


【解决方案1】:

这是对您问题的字面回答,但请继续阅读

let loginRef = self.ref.child("fblogintest-35707").child("Optional(\"gl8...\")")

loginRef.observeSingleEvent(of: .value, with: { snapshot in
    let val = snapshot.value as! [String: Any]
    let te = val["totalExercise"]
    print(te)
})

gl8 是一个很长的字符串,我不想重新输入,所以只需从您的问题中插入即可。此代码将打印“10”

话虽如此,Firebase 结构和问题中的代码存在许多问题。

正如您所看到的,无论在您的问题中创建键的代码是什么,都将它们创建为 Optional,并且不应这样做,因为“Optional("gl8..") 的实际字符串正在写入 Firebase。 . 这就是为什么你会在你的结构中看到 Optional 这个词。

您可能应该对 ref 进行一些解包/错误检查?和用户?同样,如果它们为 nil(它们是可选项),代码也不会崩溃。

如果您还没有这样做,请阅读 Optionals,因为它们非常强大,但您必须思考如何有效地实现它们以保护您的代码。

【讨论】:

  • 非常感谢。您的代码答案非常有帮助,而且有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 2023-03-13
  • 2016-05-08
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多