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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (17)

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

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

我想把它改成

subject
-------"a":"true"
-------"b":"true"
-------"c":"true"
提问于
用户回答回答于

我想问的是如何获取问题中所示的字符串数组并将它们写入Firebase,其中每个字符串元素都是一个键,它的子值为true。

我们可以利用Swift Dictionary的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)

这可以使用更多的错误检查,并假设元素始终是字符串。

扫码关注云+社区

领取腾讯云代金券