如何在firebase(swift)中获取子节点的值,并将其显示在视图控制器的标签中

Posted

技术标签:

【中文标题】如何在firebase(swift)中获取子节点的值,并将其显示在视图控制器的标签中【英文标题】:how to get the value of child nodes in firebase (swift), and display it in a label on a view controller 【发布时间】:2015-09-05 17:13:09 【问题描述】:

这是我的火力基地结构

用户:

简单登录1:

姓名:麦克 年龄:24 地点:美国

我正在尝试获取当前登录用户的信息并将其显示在视图控制器的标签上。

我在确实加载的视图中写了以下代码:

override func viewDidLoad() 
    super.viewDidLoad()

    ref.observeSingleEventOfType(.ChildAdded, withBlock:  snapshot in

    println(snapshot.value["users\(self.ref.authData.uid)/age"] as? String)

    )

但是当我运行我的应用程序时,它会在控制台中打印“nil”。我应该编写哪些代码行来获取子节点的信息?一旦我得到它,我就可以轻松地根据它设置我的标签。请帮助我,我是 swift 和 firebase 的新手。

更多

这是我创建 Ref 的方式:

var ref = Firebase(url: "https://chatty93.firebaseio.com/")

var userId = authData.uid

let newUser = [                       
  "name": self.Name.text,
  "location" : "",
  "age"      : "",
]

self.ref.childByAppendingPath("users")
    .childByAppendingPath(authData.uid)
    .setValue(newUser) 

名称由该视图控制器上的登录用户提供,年龄和位置由另一个视图控制器上的登录用户提供。这是我在另一个视图控制器上编写的代码:

var age: Void  = ref.childByAppendingPath("users/\(ref.authData.uid)/age").setValue(AgeTextField.text)
var location: Void  = ref.childByAppendingPath("users/\(ref.authData.uid)/location").setValue(LocationTextField.text)
var About : Void = ref.childByAppendingPath("users/\(ref.authData.uid)/about").setValue(AboutTextField.text)

现在在另一个视图控制器上,我只想从 firebase 获取这个年龄位置和名称并显示在标签上,但我就是不知道该怎么做.. 我尝试了单一类型的观察事件,但它是给我零..请帮帮我!谢谢:)

【问题讨论】:

你能提供你是如何创建参考的吗? @DavidEast 我在上面的帖子中提到了我是如何创建 ref 的。请看一下代码并帮助我 @Kamran Ahmend Khan 的回答看起来是对的。查看您尝试访问的数据的 URL。确保您以编程方式创建的路径与该路径匹配。否则,该位置的数据将为零。 @DavidEast 请帮助我如何编辑网址。?如果我正在尝试 users/authdata.uid/age.. 我应该在 url 中更改什么? 这个问题解决了..年龄的值在控制台中打印,但是当我尝试将它设置为标签时..这是我编码的:“self.AgeLbl.text = snapshot. value["age"] as?String " 但是当视图加载 AgeLabel 时什么都不显示 【参考方案1】:

试试

ref.childByAppendingPath("users")
.childByAppendingPath(authData.uid)
.childByAppendingPath("age")
.observeSingleEventOfType(.ChildAdded, withBlock:  snapshot in

        println(snapshot.value)


    )

【讨论】:

他让我试试我会告诉你的:) 我试过了,但它没有打印任何东西,控制台保持空白! :( 请考虑在您的代码中添加更多细节。 你能更精确一点吗?我到底应该添加什么? @iosDev82 @ShahzaibQureshi 该评论是针对卡姆兰·艾哈迈德的。目前答案只有代码,没有解释它的作用。

以上是关于如何在firebase(swift)中获取子节点的值,并将其显示在视图控制器的标签中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在 Firebase 中使用 equalTo 查询查找子节点? [复制]

如何从特定的 UICollectionViewCell 中删除 firebase 子节点 - Swift

如何使用 Swift 从 UITableViewCell 中删除 Firebase 中的特定子节点

根据特定值查询子节点(Swift 3、Firebase)

如何从 firebase 数据库参考中获取子节点列表?

flutter firebase 如何获取节点的所有子节点