我希望你能帮助我: 我尝试将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快照中的键看起来是一样的。
答案 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
}
}