为了账号安全,请及时绑定邮箱和手机立即绑定

通过使用查询而不是反复观察单个事件,加快为我的社交网络应用程序提取帖子

通过使用查询而不是反复观察单个事件,加快为我的社交网络应用程序提取帖子

iOS
潇湘沐 2019-05-25 16:59:05
通过使用查询而不是反复观察单个事件,加快为我的社交网络应用程序提取帖子我有一系列的键导致我的社交网络的帖子对象像/ posts / id /(发布信息)当我加载帖子时,我使用该observeSingleEventOfType(.Value)方法加载/发布/ 0然后/ posts / 1等。我使用a一次lazyTableView加载30并且速度很慢。有没有什么方法可以使用其中一种查询方法或其他方法使其更快,即使我必须重构我的JSON树中的数据。我来自Parse重新实现我的应用程序,到目前为止,经验非常好。只有这一点我有点坚持。在此先感谢您的帮助!编辑:func loadNext(i: Int) {      // check if exhists    let ideaPostsRef = Firebase(url: "https://APPURL")     ideaPostsRef.childByAppendingPath(i.description).observeSingleEventOfType(.Value, withBlock: {         (snapshot) in         if i % 29 == 0 && i != 0 && !self.hitNull { return }             // false if nil            // true if not nil        if !(snapshot.value is NSNull) {             let postJSON  = snapshot.value as! [String: AnyObject]             print("GOT VALID \(postJSON)")             let post = IdeaPost(message: postJSON["message"] as! String, byUser: postJSON["user"] as! String, withId: i.description)             post.upvotes = postJSON["upvotes"] as! Int             self.ideaPostDataSource.append(post)             self.loadNext(i + 1)         } else {             // doesn't exhist            print("GOT NULL RETURNING AT \(i)")             self.doneLoading = true             self.hitNull = true             return         }     }}这个递归函数基本上从firebase获取密钥号i的值。如果它是NSNULL,它知道这是最后一个可能加载的帖子,永远不会再做。如果NSNULL没有被击中但是i % 29 == 0它以基本情况返回,所以一次只加载30个帖子(0索引)。当我设置doneLoading为时true,tableView.reloadData()使用属性观察者调用。这是我正在获取的数组的样本"ideaPosts" : [ {     "id" : 0,     "message" : "Test",     "upvotes" : 1,     "user" : "Anonymous"   }, {     "id" : 1,     "message" : "Test2",     "upvotes" : 1,     "user" : "Anonymous"   } ]
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信