【问题标题】:How can i fetch specific data from firebase and store it in a dictionary?如何从 firebase 获取特定数据并将其存储在字典中?
【发布时间】:2019-08-09 18:40:37
【问题描述】:

我正在尝试从我的 firebase 数据库中获取数据,这样我就可以将其存储在一种字典形式中,该字典类型是 [String: [Any]] 类型,其中键是唯一 ID,值是一种数组,其数据存储在 uniqueID->Question 下。

func getData(currUser: String, completion: @escaping (([String : [Any]]) -> ())) {
    var newArray = [String : [Any]]()
    let ref = Database.database().reference(fromURL: "MYURL").child("users/\(currUser)/Questions").observeSingleEvent(of: .value, with: { (snap) in
        let enumerator = snap.children
        while let rest = enumerator.nextObject() as? DataSnapshot, let value = rest.value{

                newArray.updateValue([value], forKey: rest.key)

        }
        completion(newArray)
    })
}

这个完成块给了我:

["-LlpbizBpQTXOQ6zv0zd": [{ 问题 = ( 你好, 测试, 呸呸呸呸 ); }]]]

相反,我怎样才能得到

[“-LlpbizBpQTXOQ6zv0zd”:[你好,测试,kkkkkkkkkkkk]]

【问题讨论】:

    标签: swift firebase dictionary firebase-realtime-database


    【解决方案1】:

    您将值转换为字符串,而它实际上是一个 JSON 对象。这就是字典中的值是 JSON 对象的原因。

    要仅获取Qusetion(错字?)下的问题文本,您需要遍历该子快照并收集各个值。比如:

    var newArray = [String : [Any]]()
    let ref = Database.database().reference(fromURL: "MYURL").child("users/\(currUser)/Questions").observeSingleEvent(of: .value, with: { (snap) in
        let enumerator = snap.children
        while let rest = enumerator.nextObject() as? DataSnapshot {
            var values = [String]
            let valueEnumerator = rest.childSnapshot(atPath: "Qusetion").children
            while let valueRest = valueEnumerator.nextObject() as? DataSnapshot, let value = rest.value {
                values.append(value)
            }
            newArray.updateValue([values], forKey: rest.key)
    
        }
        completion(newArray)
    })
    

    【讨论】:

      猜你喜欢
      • 2022-07-20
      • 2017-04-21
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多