想要将firebase中的userdata提取到字典中

时间:2017-08-16 14:12:33

标签: swift dictionary firebase firebase-realtime-database

我希望你能帮助我: 我尝试将firebase数据库中的userdata提取到用户类中,并调用" setValuesForKeys"。我知道我的类属性必须与firebase字典中的完全相同,但是我已经得到了错误"这个类不是关键城市的关键值编码兼容。"

func fetchUsers(){
    Database.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
        if let usersDictionary = snapshot.value as? [String: String] {
            let users = Userdata()
            users.setValuesForKeys(usersDictionary)
        }
    }, withCancel: nil)
}

我的用户类是

class Userdata: NSObject {
    var email: String?
    var password: String?
    var firstname: String?
    var lastname: String?
    var street: String?
    var streetno: String?
    var zipcode: String?
    var city: String?
    var phone: String?  }

来自firebase的快照类似于

Snap (ndLBXXX75Oe9Y1PXrqfISL8A4v82) {
city = Washington;
email = "1@a.com";
firstname = Andre;
lastname = Doe;
password = xxxxxx;
phone = "";
street = "Mainstreet";
streetno = 1;
zipcode = 11111;

}

数据库中的字典看起来像

["city": Washington, "firstname": Andre, "lastname": Doe, "email": 1@a.com, "password": xxxxxx, "streetno": 1, "phone": , "street": Mainstreet, "zipcode": 11111]

到目前为止,我有一个解决方案:

users.city = dictionary["city"]

我的问题/问题:我确实想了解错误消息背后的问题"此类不是关键城市的密钥值编码兼容。"因为类和firebase快照中的键看起来是一样的。

1 个答案:

答案 0 :(得分:0)

工作解决方案:我必须扩展我的用户类。现在,整个用户类看起来像:

以下是代码:

 import Foundation

    class UserData: NSObject {
        var id: String?
        var email: String?
        var password: String?
        var salutation: String?
        var degree: String?
        var firstname: String?
        var lastname: String?
        var street: String?
        var streetno: String?
        var zipcode: String?
        var city: String?
        var phone: String?
        var profileImage: String?

    init(dictionary: [String: Any]) {
        self.city = dictionary["city"] as? String
        self.id = dictionary["id"] as? String
        self.email = dictionary["email"] as? String
        self.salutation = dictionary["salutation"] as? String
        self.degree = dictionary["degree"] as? String
        self.firstname = dictionary["firstname"] as? String
        self.lastname = dictionary["lastname"] as? String
        self.password = dictionary["password"] as? String
        self.phone = dictionary["phone"] as? String
        self.street = dictionary["street"] as? String
        self.streetno = dictionary["streetno"] as? String
        self.zipcode = dictionary["zipcode"] as? String
        self.profileImage = dictionary["profileImage"] as? String

    }
}