我一直收到一条错误消息。我在谷歌上看过类似的问题,他们谈到了一些必须做的事情——故事板和媒体。每当我直接用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看不到你没有显示的内容。