快照值作为 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 导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Android 上 Unity 中的 Firebase 快照获取“空”值