将Firebase数据库的子项存储在数组中

时间:2017-02-13 04:07:36

标签: ios swift firebase firebase-realtime-database

我已经设置了一个Firebase数据库,该数据库包含父级和许多不同的子级。我试图将所有孩子的密钥保存到一个我可以在代码中的其他地方访问的数组中。

// Used to get the children
rootRef.child(partyName).observe(.childAdded, with: { (snapshot) in
    var newItems = [FIRDataSnapshot]()

    for item in snapshot.children {
        newItems.append(item as! FIRDataSnapshot)

    }

    if let snapDict = snapshot.value as? [String:AnyObject]{

        for each in snapDict{
            let keyID = each.key

            saves.append(keyID)
        }
    }

})

不幸的是,我在网上找到的大多数“解决方案”只是打印检索到的数据或将其添加到表视图中。我只想让所有的孩子都保存在一个我以后可以访问的数组中。这可能吗?如果是这样,我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

存储检索到的数据的正确方法是将键值对存储在NSDictionary或Swift Dictionary中。正如萨钦瓦斯所说,只存储密钥是没有意义的,因为那时你与价值观没有关系。

尽管如此,为了回答您的问题,您在问题中提供的代码可以满足您的要求。如果saves是某个类中的全局或静态数组,则它将在整个应用程序中全局访问,并包含所有检索到的键。

存储检索到的数据的正确方法将以相同的方式工作,除了saves将是Dictionary

rootRef.child(partyName).observe(.childAdded, with: { (snapshot) in

    if let snapDict = snapshot.value as? [String:AnyObject] {
        saves = snapDict    // where saves is declared as Dictionary<String, AnyObject> 
    }

})