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

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

我有一系列的键导致我的社交网络的帖子对象像/ 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为时truetableView.reloadData()使用属性观察者调用。

这是我正在获取的数组的样本

"ideaPosts" : [ {
    "id" : 0,
    "message" : "Test",
    "upvotes" : 1,
    "user" : "Anonymous"
  }, {
    "id" : 1,
    "message" : "Test2",
    "upvotes" : 1,
    "user" : "Anonymous"
  } ]


潇湘沐
浏览 449回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS