这个类不是密钥值的密钥值编码。

时间:2017-10-02 10:07:11

标签: swift

我创建了一个类名Users,如下所示

public class Users: NSObject {
    var name: String?
    var email: String?
}

和其他类创建用户类数组

var regUser = [Users]()

func fetchUser(){
    Database.database().reference().child("users").observe(.childAdded, with: {(DataSnapshot) in
        if let dictionary = DataSnapshot.value as? [String: AnyObject]{
            let user = Users()

            user.setValuesForKeys(dictionary)
            self.users.append(user)

            DispatchQueue.main.async {
                self.tableView.reloadData()
            }
            print(user.email)
        }   
    }, withCancel: nil)
}

发生以下错误:

  

“Users 0x60400028fdc0> setValue:forUndefinedKey:]:此类与密钥名称不符合密钥值编码。”

1 个答案:

答案 0 :(得分:8)

键值编码取决于Objective-C,在Swift 4和新的Objective-C推理规则下,您的nameemail属性将不可用。

您可以将各个属性标记为@objc

@objc var name: String?

或者您可以说课程中的所有内容都可用:

@objcMembers
public class Users: NSObject {