快照值作为int导致崩溃

时间:2018-08-14 21:22:22

标签: swift firebase firebase-realtime-database

所以我正在提出一个朋友请求,并且在获取这些请求时出现了错误。

  

此类不适用于键xxx的键值编码

通过发送请求可以正常工作(these are the values from sending a request):

let fromId = (Auth.auth().currentUser!.uid)
        let toId = self.otherUser?["uid"] as! String

        let senderFriendRef = databaseRef.child("friendship").child(fromId)
        senderFriendRef.updateChildValues([toId : 0])
        let receiverFriendRef = databaseRef.child("friendship").child(toId)
         receiverFriendRef.updateChildValues([fromId : 1])

这是获取请求的代码。我玩过if (snapshot.value as? Int == 1),看来这可能导致崩溃,因为在出​​现错误之前,我无法将其强制转换为Int

if let loggedInUser = Auth.auth().currentUser?.uid {
    Database.database().reference().child("friendship").child(loggedInUser).observe(.childAdded) { (snapshot) in
        if (snapshot.value as? Int == 1) {
            let requestId = snapshot.key
            Database.database().reference().child("users").child(requestId).observeSingleEvent(of: .value, with: { (snapshot) in
                if let dict = snapshot.value as? [String : AnyObject] {
                    let person = Person()//model
                    person.setValuesForKeys(dict)
                    person.id = requestId
                    self.friendRequest.append(person)
                    print(self.friendRequest)
                    DispatchQueue.global().async {
                        DispatchQueue.main.async {
                            self.collectionView.reloadData()
//ending brackets

1 个答案:

答案 0 :(得分:0)

永远不要使用setValuesForKeys用户,您只会遇到很多问题。 This其他帖子帮助我解决了该问题。