我有这样的JSON树:
在我的应用程序主页上,我只想显示组的列表和该组中的消息数量。
在正常情况下,我获取所有的聊天并显示每个组聊天消息的数量,但是如果有更多的组,这样做会产生很大的性能影响。
我发现这的web和过时,但不是iOS的SDK。
,那么,在不检索所有消息的情况下,如何从group1中获取消息的计数?
发布于 2016-10-15 02:47:26
如何在每个组下添加一个noOfMessages
节点,并每次使用组消息计数更改来更新它。您需要在某个时候进行查询才能计数noOfChildren,对吗?但不是每次都是这样。
对于我来说,我刚刚创建了一个func countNodes()
,它将在每次添加子程序时都会被触发,或者您可以在NSTimer中使用timeInterval,正如您所说的那样,这很昂贵。
但是使用.childAdded,您只会收到附加的键值对,而不是节点的全部值,然后您只需用.childAdded计数更新您的节点的值。
至于你的情况,将你的结构改为:
chats :{
group1 : {
...
},
},
noOfMessages :{
group1 : 18,
group2 : 76,
....
}
在每组.childAdded
. eventType中添加一个观察者
FIRDatabase.database().reference().child("chats/group1").observeSingleEvent(of: .childAdded, with: {(snap) in
//Run transaction to update your noOfMessage Count
})
要获得noOfMessages计数:-
FIRDatabase.database().reference().child("noOfMessages/group1").observeSingleEvent(of: .value, with: {(snap) in
let count = snap.value as! Int
})
https://stackoverflow.com/questions/40057852
复制