快照值作为 int 导致崩溃

Posted

技术标签:

【中文标题】快照值作为 int 导致崩溃【英文标题】:Snapshot value as int cause crash 【发布时间】:2018-08-14 21:22:21 【问题描述】:

所以我提出了一个朋友请求,在获取这些请求时我收到了一个错误。

这个类不符合键 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

【问题讨论】:

这里是link,您提出的同一个问题。 :-) @Kouder 好吧我试过他说的,但现在它给了我一个零(使用选项 2) 【参考方案1】:

永远不要用户setValuesForKeys 你只会遇到很多问题。 This 其他帖子帮助我修复了它。

【讨论】:

以上是关于快照值作为 int 导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Vmware无法获取快照信息 锁定文件失败

Vmware无法获取快照信息 锁定文件失败

相机在IOS中不工作

无法从 Android 上 Unity 中的 Firebase 快照获取“空”值

VMWare虚拟机提示:“锁定文件失败,打不开磁盘或快照所依赖的磁盘”的解决方法

删除合并快照时因磁盘空间不够导致快照管理器看不到快照无法完成的解决方法