2017-03-10 70 views
-1

火力地堡字典数据我有一个火力地堡数据库的结构是这样的:检索斯威夫特

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

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

我的问题是,什么是在swift中检索这些数据的最佳方法?

+0

您是否查看了Firebase指南[使用列表](https://firebase.google.com/docs/database/ios/lists-of-data),其中还包括排序? – Jay

回答

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 

    // ... 

}) 

,如果该数据进行排序或不上火力地堡其实并不重要,检索将是相同的复杂的

更新

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

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]将是数据,extractedData[25]将是Z中的数据。当然,这是假设你每个字母都有一个孩子。

+0

对于字母表中的每个字母,我必须硬编码'let A = myData ['A']“ – Adam

+0

更新了答案!:-) – ThunderStruct

0

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

struct Data { 
    ... 
} 

创建包装:

struct DataWrapper { 
    let data: [Data] 
} 

然后,创建一个新的模式:

struct ModelName { 
    results: [DataWrapper] 
}