Swift 3.1 - .setValuesForKeys和Firebase无法审核用户

时间:2017-04-28 22:44:56

标签: swift firebase set key

所以我有这段代码假设从数据库中获取用户并将它们存储在一个数组(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'

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

......我修好了。

更换

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

答案 1 :(得分:1)

错误unrecognized selector sent to instance表示您尝试将密钥设置为错误类型的值。从您的代码中不清楚对象User是什么类型,或dictionary对象中有哪些键,但其中一个值不是User的类型期待那把钥匙。

要修复它,您需要将字典中的每个值转换为正确的类型。