像这样的东西应该工作(具有更好的命名变量):
- 铸
snapshot.value
作为字典
- 使用字典的
.keys
& .values
个属性将它们检索为LazyMapCollection
类型。
- 使用集合初始化一个数组。
代码:
self.ref?
.child("data")
.child("success")
.child(userID!)
.observeSingleEvent(of: .value, with: { (snapshot) in
if let data = snapshot.value as? [String: Any] {
let keys = Array(data.keys)
let values = Array(data.values)
... // Your code here
}
}
更新 - 要显示例子,其中为了尊重:
我可能会保存字典数组,蒙上它键入Array<(key: String, value: Any)>
。然后,您可以将其映射到键或值并保持订单。
... // As above
.observeSingleEvent(of: .value, with: { (snapshot) in
if let data = snapshot.value as? [String: Any] {
let dataArray = Array(data)
let keys = dataArray.map { $0.0 }
let values = dataArray.map { $0.1 }
... // Your code here
}
}
这里的问题是,排序丢失。 – Jay
@Jay更新了代码以反映您的评论 - 这是否解决了您的问题? – Yasir
不幸的是,如果该值是另一个快照,则不起作用。只要OP保持该值为一个字符串或数字(即可直接订购的值),它*将*用于该问题。我喜欢解决方案! – Jay