如何将数据数组作为数据库子项的键

时间:2019-05-27 10:19:06

标签: swift firebase

以前,我想查询Firebase中的数组数据,但发现Firebase中的数组数据不支持查询。因此,我想将数组作为键,其值为true。预先谢谢你。

例如, 当我有array = ["a", "b", "c"]

我想将其更改为

subject
-------"a":"true"
-------"b":"true"
-------"c":"true"

1 个答案:

答案 0 :(得分:0)

我认为所要问的是如何按照问题中所示的方式获取字符串数组并将其写入Firebase,在Firebase中每个字符串元素都是键,并且其子值为true。

我们可以利用Swift字典的 uniqueKeysWithValues 函数创建键:值对并将它们存储在字典中,然后将其写入Firebase。

let array = ["a", "b", "c"]
let dict = Dictionary(uniqueKeysWithValues: array.map { ($0, true) })
fbRef.child("subject").setValue(dict)

结果将是

subject
   a: true
   b: true
   c: true

另一个选择是创建扩展以向阵列(序列)添加功能。

extension Sequence {
    func toDictionary() -> [String: Bool] {
        var dict = [String: Bool]()
        for element in self {
            if let s = element.self as? String {
                dict[s] = true
            }
        }
        return dict
    }
}

和用法

let anArray = ["x", "y", "z"]
let dict = anArray.toDictionary()
fbRef.child("subject").setValue(dict)

这可能会使用更多错误检查,并假定元素始终是字符串。