0

2018-12-30 15:01:23.228731+0200 iChat[51679:726127] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合键值编码为关键用户名。(lldb)

使用 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)
        }
    }
}
4

1 回答 1

0

Swift 4 中更改了 Objective-C 推理。您必须将@objc属性添加到每个属性

class User: NSObject {
   @objc var email: String?
   @objc var username: String?
}

然而setValuesForKeys,这是非常客观的 c-ish。Swift 中有更好(和更轻量级)的方法,而无需繁重的 ObjC 运行时。

为什么这两个属性都是可选的?是否允许没有姓名和电子邮件的用户?

考虑使用非可选参数,如果您要传递nil.

于 2018-12-30T13:24:42.657 回答