【问题标题】:Retrieve Firebase dictionary data in Swift在 Swift 中检索 Firebase 字典数据
【发布时间】:2017-07-31 06:03:01
【问题描述】:

我有一个结构如下的 Firebase 数据库:

results: {
  A: [
    {data}
  ],
  B: [
    {data}
  ],
  C: [
    {data}
  ],
  ....
}

它是一个按字母顺序排列的值字典。

我的问题是,快速检索这些数据的最佳方法是什么?

【问题讨论】:

标签: ios swift dictionary firebase firebase-realtime-database


【解决方案1】:

通常,检索 Firebase 数据的最常见做法是将快照的值转换为 Swift Dictionary,如下所示:

let myRef = FIRDatabase.database().reference().child("results")
myRef.observeSingleEvent(of: .value, with: { (snapshot) in

    if !snapshot.exists() {
        // handle data not found
        return
    }

    // data found
    let myData = snapshot.value as! [String: Any]    // the key is almost always a String 

    // extracting data from the dictionary
    let A = myData["A"] as! [String: Any]
    let dataInA = A["anyChildOfA"] as! Double

    // ...

})

数据是否在 Firebase 上排序并不重要,检索将具有相同的复杂性

更新

您可以简单地遍历所有字母表来提取数据:

var extractedData = [[String: Any]]()     // array of Swift Dictionary
for c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters {
    let temp = myData[String(c)] as! [String: Any]

    extractedData.append(temp);
}

extractedData[0] 将是 A 中的数据,extractedData[25] 将是 Z 中的数据。当然,这是假设每个字母都有一个孩子。

【讨论】:

  • 我是否必须为字母表中的每个字母硬编码“让 A = myData['A']”?
  • 更新了答案! :-)
【解决方案2】:

创建一个结构来呈现“数据”:

struct Data {
   ...
}

创建一个包装器:

struct DataWrapper {
     let data: [Data]
}

然后,创建一个新模型:

struct ModelName {
    results: [DataWrapper]
}

【讨论】:

    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多