尝试将用户facebook-firebase信息中的快照保存到User类,以便我可以在整个应用程序中引用它。当我使用“user.setValuesForKeysInDictionary(字典)”将快照字典转换为User对象时,应用程序崩溃,如果我对该行进行注释,则print(dictionary [“first_name”])有效。有什么想法吗?
var users = [User]()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(handleCancel))
fetchUser()
}
func fetchUser() {
Database.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.setValuesForKeysInDictionary(dictionary)
print(dictionary["first_name"])
}
// print(snapshot)
}, withCancel: nil)
}
这是User类文件
import UIKit
class User: NSObject {
var name: String?
var email: String?
var id: String?
var first_name: String?
}
答案 0 :(得分:1)
首先,不要使用AnyObject
使用Any
。
建议:如果您使用 swift4 使用可编码,请勿使用AnyObject
确保您的所有User
属性都与dictionary
键匹配
根据Apple文档
keyedValues
一个字典,其键标识接收器中的属性。接收器中属性的值设置为字典中的相应值。