当我的键到处匹配时,为什么我会得到这个类不符合键的键值编码

  • 本文关键字:编码 键值 不符合 swift firebase swift5
  • 更新时间 :
  • 英文 :


我一直收到一条错误消息。我在谷歌上看过类似的问题,他们谈到了一些必须做的事情——故事板和媒体。每当我直接用self.navigation.title = ___设置标题时,我都不会遇到问题。只有当我使用setValuesForKeys(dictionary)

exception 'NSUnknownKeyException', reason: '[<FirebaseApp.User 0x600001558940> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key email.'

我有一个包含以下内容的NSObject。这些值是按照我在firebase上的方式写的。

class User: NSObject {
var email: String!
var photoURL: String!
var username: String!
class MessageController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()

var ref: DatabaseReference!
ref = Database.database().reference()

let userID = Auth.auth().currentUser?.uid
ref.child("users/profile").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot)
if let dictionary = snapshot.value as? [String: AnyObject] {
//            self.navigationItem.title = dictionary["username"] as? String
let user = User()
user.setValuesForKeys(dictionary)
self.setUpNavBar(user: user)
}
}, withCancel: nil)
}
func setUpNavBar(user: User) {
self.navigationItem.title = user.username
}

更改

class User: NSObject {
var email: String!
var photoURL: String!
var username: String!
}

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

或者(正如Rob所说(

@objcMembers
class User: NSObject {
var email: String!
var photoURL: String!
var username: String!
}

键值编码是Objective-C。Objective-C看不到你没有显示的内容。

最新更新