首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Firebase iOS SDK -如何计算性能良好的子级数?

Firebase iOS SDK -如何计算性能良好的子级数?
EN

Stack Overflow用户
提问于 2016-10-15 10:24:09
回答 1查看 1.4K关注 0票数 1

我有这样的JSON树:

在我的应用程序主页上,我只想显示组的列表和该组中的消息数量。

在正常情况下,我获取所有的聊天并显示每个组聊天消息的数量,但是如果有更多的组,这样做会产生很大的性能影响。

我发现的web和过时,但不是iOS的SDK。

,那么,在不检索所有消息的情况下,如何从group1中获取消息的计数?

EN

回答 1

Stack Overflow用户

发布于 2016-10-15 10:47:26

如何在每个组下添加一个noOfMessages节点,并每次使用组消息计数更改来更新它。您需要在某个时候进行查询才能计数noOfChildren,对吗?但不是每次都是这样。

对于我来说,我刚刚创建了一个func countNodes(),它将在每次添加子程序时都会被触发,或者您可以在NSTimer中使用timeInterval,正如您所说的那样,这很昂贵。

但是使用.childAdded,您只会收到附加的键值对,而不是节点的全部值,然后您只需用.childAdded计数更新您的节点的值。

至于你的情况,将你的结构改为:

代码语言:javascript
代码运行次数:0
运行
复制
 chats :{
   group1 : {
         ...
       },
   },
 noOfMessages :{
    group1 : 18,
    group2 : 76,
   ....
   }

在每组.childAdded. eventType中添加一个观察者

代码语言:javascript
代码运行次数:0
运行
复制
FIRDatabase.database().reference().child("chats/group1").observeSingleEvent(of: .childAdded, with: {(snap) in

        //Run transaction to update your noOfMessage Count

    }) 

要获得noOfMessages计数:-

代码语言:javascript
代码运行次数:0
运行
复制
FIRDatabase.database().reference().child("noOfMessages/group1").observeSingleEvent(of: .value, with: {(snap) in
      let count = snap.value as! Int
 })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40057852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档