【发布时间】:2017-12-23 16:07:50
【问题描述】:
root
|
@-clothing
|
@-nameBrandRalphLauren//topLevel
| |
| @-apparelTops//child
| | |-"garmetSweater":"white"
| | |-"garmetTshirt":"blue"
| | |-"postedBy":"user123"
| |
| @-apparelBottoms//child
| |-"garmetShorts":"tan"
| |-"garmetJeans":"blue"
| |-"postedBy":"user123"
|
@-nameBrandNike//topLevel
|
@-apparelTops//child
|-"garmetSweater":"gray"
|-"garmetTshirt":"pink"
|-"postedBy":"user789"
我在 Firebase 中有几个顶级节点,它们下面也有子节点。子节点内部是键和值。我想将每个 topLevelNode (RalphLauren,Nike) 分成一个数组,其中包含它的子节点 (apparelTops, apparelBottoms),然后将它们放入自己的数组中。
我将如何实现这样的目标
var nameBrandNodes = [String]()
var apparelNodes = [[String]]()
var garmetNodes = [[String:Any]]()
nameBrandNodes = [RaplhLaurn, Nike]
apparelNodes = [[apparelTops, apparelBottoms], [apparelTops, apparelBottoms]]
garmetNodes = [["postedBy":"user123"], ["garmetSweater":"white"],["garmetTshirt":"blue"],["garmetShorts":"tan"], ["garmetJeans":"blue"], ["postedBy":"user789"], ["garmetSweater":"gray"], ["garmetTshirt":"pink"]]
//**EDIT** Jay's answer is CORRECT. I forgot to add this and added it after he answered
var nameBrandArrayOfDict = [[String:[String]]]
nameBrandArrayOfDict = [[nameBrandRalphLauren:[apparelTops,apparelBottoms], [[nameBrandNike:[apparelTops,apparelBottoms]]
//this is only necessary because sometimes there won't be an apparelBottomsNode or apparelTopsNode for e.g.
nameBrandArrayOfDict = [[nameBrandRalphLauren:[apparelTops], [[nameBrandNike:[apparelBottoms]]
代码如下:
let rootRef = Database.database().reference()
var nameBrandNodes = [String]()
var apparelNodes = [[String]]()
var garmetNodes = [[String:Any]]()
let clothingRef = rootRef.child("clothing")
clothingRef?.observe(.childAdded, with: {
(snapshot) in
//nameBrandNodes now contains RalphLauren and Nike
self.nameBrandNodes.append(snapshot.key)
for nameBrand in self.nameBrandNodes{
let apparel = rootRef.child("clothing").child("nameBrand")
apparel.observeSingleEvent(of: .value, with: {
(snapshot) in
for child in snapshot.children {
//what should I do in here?
}
}
我的最终结果是我使用了一个垂直的 tableView 和一个水平的 collectionsView。我将列出 tableView 中的 nameBrands、collectionView 中的服装以及 collectionViews 单元格中的服装项目。我知道如何在分离后将所有内容放入 tableView 和 collectionView 中,我遇到的问题是将所有内容分成不同的数组。
【问题讨论】:
标签: arrays swift loops dictionary firebase