Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将数据数组作为数据库子项的键_Swift_Firebase - Fatal编程技术网

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

Swift 如何将数据数组作为数据库子项的键,swift,firebase,Swift,Firebase,以前,我想在Firebase中查询数组数据,但我发现Firebase中的数组数据不支持该查询。因此,我希望将数组设为键,值为true。先谢谢你 比如说,, 当我有数组=[“a”、“b”、“c”] 我想把它改成 subject -------"a":"true" -------"b":"true" -------"c":"true" 我想我们要问的是如何获取问题中所示的字符串数组,并将它们写入Firebase,其中每个字符串元素都是一个键,它的子值为true 我们可以利用Swift字典的uniq

以前,我想在Firebase中查询数组数据,但我发现Firebase中的数组数据不支持该查询。因此,我希望将数组设为键,值为true。先谢谢你

比如说,, 当我有
数组=[“a”、“b”、“c”]

我想把它改成

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

我想我们要问的是如何获取问题中所示的字符串数组,并将它们写入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
另一个选项是创建扩展以向数组(序列)添加功能

以及用法

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

这可能需要更多的错误检查,并假设元素始终是字符串。

如果要在firebase中存储此类数据,更好的方法是创建一个子元素。此子级有2个子级,一个子级存储true/false,另一个子级存储array,这样您也可以节省空间。
let anArray = ["x", "y", "z"]
let dict = anArray.toDictionary()
fbRef.child("subject").setValue(dict)