2018-12-30 15:01:23.228731+0200 class 51679:726127*终止应用程序,原因:‘setValue:forUndefinedKey::这个类不符合键username.’的键值编码。‘(十一分贝)
使用firebase字典为NSobject类的键设置值
import UIKit
class User: NSObject {
var email: String?
var username: String?
}函数
func fetchUsers() {
Database.database().reference().child("users").observe(.childAdded) { (snap) in
if let dictionary = snap.value as? [String : AnyObject]{
let user = User()
user.setValuesForKeys(dictionary)
print(user.username)
}
}
}发布于 2018-12-30 13:24:42
在Swift 4中已更改了Objective推断。必须向每个属性添加@objc属性。
class User: NSObject {
@objc var email: String?
@objc var username: String?
}然而,setValuesForKeys是非常客观的-c-ish.没有沉重的ObjC运行时,Swift中有更好(更轻量级)的方法。
为什么这两个属性都是可选的呢?是否允许用户不使用姓名和电子邮件?
考虑一下,对于非选项,编译器将在编译时抛出一个错误,如果要传递nil,则为。
https://stackoverflow.com/questions/53977874
复制相似问题