将Firebase数据库子映射到swift 3对象

时间:2017-05-04 15:00:14

标签: ios swift firebase firebase-realtime-database

如何将我的firebase数据库中列表中存储的对象映射到swift中的相应对象?

目前以下内容无效:

for child in snapshot.children{
    let tempMed = child as Med
}

1 个答案:

答案 0 :(得分:4)

您无法直接从FIRDataSnapshot获取自定义对象,您可以使用自定义类或结构创建一个init,并使用该对象从FIRDataSnapshot创建对象。

实施例

struct Med {

    let title: String
    let desc: String
    init?(snapshot: FIRDataSnapshot) {
        guard let dic = snapshot.value as? [String:Any], 
              let title = dic["title"] as? String,
              let desc = dic["description"] as? String else {
            return nil
        }
        self.title = title
        self.desc = desc
    }
}

现在以这种方式获取Med数组。

let meds = snapshot.children.flatMap { Med(snapshot: $0 as! FIRDataSnapshot)  }