这个类不符合键值编码规范,无法对属性“name”进行编码。

3

我创建了一个名为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)
}

发生以下错误:
“用户0x60400028fdc0> setValue:forUndefinedKey:]:此类不符合关键值编码,无法使用名称。”
1个回答

12

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

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

@objc var name: String?

或者你可以说类中的所有内容都是可用的:
@objcMembers
public class Users: NSObject {

感谢你的帮助,它现在可以正常工作了。 - user6512047
完美的答案... - Ewerson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接