Swift 3.1 - .setValuesForKeys和Firebase无法检索用户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 3.1 - .setValuesForKeys和Firebase无法检索用户相关的知识,希望对你有一定的参考价值。
所以我有这段代码假设从数据库中获取用户并将它们存储在一个Array(drivingUsers)中。我没有错误但是当我运行应用程序时它会崩溃。
func fetchUser() {
FIRDatabase.database().reference().child("user_profiles").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.setValuesForKeys(dictionary) //Error
self.drivingUsers.append(user)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}, withCancel: nil)
}
错误日志:
2017-04-29 00:41:46.842568 VEXI[1745:369755] -[__NSCFNumber length]: unrecognized selector sent to instance 0x174a34500
2017-04-29 00:41:46.844084 VEXI[1745:369755] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x174a34500'
有任何想法吗?
答案
错误unrecognized selector sent to instance
表示您尝试将键设置为错误类型的值。从你的代码中不清楚User
是什么类型的对象,或dictionary
对象中有哪些键,但其中一个值不是User
期望该键的类型。
要修复它,您需要将字典中的每个值转换为正确的类型。
另一答案
... 我修好了它。
更换
user.setValuesForKeys(dictionary)
同
user.name = dictionary["name"] as? String
user.email = dictionary["email"] as? String
user.picture = dictionary["picture"] as? String
user.facebookID = dictionary["facebookID"] as? String
user.status = dictionary["status"] as? String
user.date_joined = dictionary["date_joined"] as? String
user.last_login = dictionary["last_login"] as? String
user.Longitude = dictionary["Longitude"] as? String
user.Latitude = dictionary["Latitude"] as? String
以上是关于Swift 3.1 - .setValuesForKeys和Firebase无法检索用户的主要内容,如果未能解决你的问题,请参考以下文章