【问题标题】:Firebase getting specific parent not all children SWIFTFirebase 获取特定父级而不是所有子级 SWIFT
【发布时间】:2018-07-25 03:43:30
【问题描述】:

这是我在 stackoverflow 上的第一个问题,但我一生都无法解决这个问题。我正在使用 Xcode 和 Swift 4。

我想从 Firebase 中读取某个子级别,以根据那里的结果制作一个 tableView。以下是我的 Firebase 数据:

我想制作一个 tableView,其中列出了“子名称”下的 Bill 和 Josh,我似乎只制作了一个包含 Bill 和 Josh 的所有孩子的快照。我只想要直接在 subNames 子项中的项目列表。有人知道该怎么做吗?我确定我错过了什么..

这是我的代码:

var ref: DatabaseReference!

var refHandle: UInt!

override func viewDidLoad() {
    super.viewDidLoad()



    ref = Database.database().reference() 

}

func loadmoreData () {

    refHandle = ref?.child("Users").child(FBuid).observe(.value, with : { (snapshot) in

        let mynamesArray = snapshot.childSnapshot(forPath: "subNames")

        print (mynamesArray)
    })

【问题讨论】:

  • 请编辑您的问题以包括您如何初始化ref
  • 我重新上传了代码。当我运行这段代码时,我得到的结果是:Snap (subNames) { Bill = { name = Bill; thissubUID = SZL9yf6EwRS5XJZIU6uQfhTfBmT2; };乔希 = { 姓名 = 乔希; thissubUID = McJWwodagxaqfOl0NSzoz4MwLrB2; };但是,我只想要 Bill 和 Josh 的结果。
  • 更正确地说,我想要 ["Bill","Josh"] 的结果

标签: swift firebase firebase-realtime-database


【解决方案1】:

要获得一个仅包含 subNames 下的键的数组,您需要这样的东西:

refHandle = ref?.child("Users").child(FBuid).child("subNames").observe(.value, with : { (snapshot) in

  let mynamesArray = [String]()

  for child in snapshot.children {
    mynamesArray.append(child.key)
  }

  print (mynamesArray)
})

【讨论】:

  • 嗨弗兰克..非常感谢您的回答..太好了..我想我不完全理解 .key 部分..但效果很好..我确实有将一行代码更正为: mynamesArray.append((child as AnyObject).key)
  • 键是节点的名称,因此在您的情况下是 BillJosh 字符串。键下的东西是它的值,可以通过快照的value 属性获得。
猜你喜欢
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多