Firebase 获取特定父级而不是所有子级 SWIFT

Posted

技术标签:

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

这是我在 *** 上的第一个问题,但我一生都无法解决这个问题。我正在使用 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"] 的结果 【参考方案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 属性获得。

以上是关于Firebase 获取特定父级而不是所有子级 SWIFT的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0 如何在 Firebase 中的父级上添加子级

在 jQuery 中,如何设置元素的“top,left”属性,其位置值相对于父级而不是文档?

Firebase:在不知道父级的情况下查询内部子级

qt qml。 MouseArea 可以看到事件,但将它们全部传递给父级而不影响它们吗?

获取父级mysql的所有子级一个查询5.6

通过父级id获取到其下所有子级(无穷级)id及父级id——Mysql函数实现