4

我正在 Instagram 上做一个练习应用程序,比如 firebase 和 swift 上的应用程序。我的问题是我发现自己嵌套了我的firebase“observeSingleEventOfType”以获得我需要的所有数据,以便我可以将它放在我的“Post Class”中。我想知道是否有更好的方法来做这件事,因为加载一篇文章似乎需要很多时间?(我正在抓取一个信息,等待,然后抓取下一个,等待,然后抓取下一个,等待,抓取下一个......并将所有内容作为一个帖子项目放在链的末端)

在初始加载时,我需要位置、热门评论、用户是否喜欢帖子、用户是否关注帖子。目前我正在做的是

-> 创建地理查询,获取地理信息。在完成块内,我有一个 observeSingleEventOfType 来从我的帖子节点中查找信息并将其存储为字典。在这个完成块中,我创建了另一个observeSingleEventOfType 调用来获取最高评论,然后在这个完成块中,我创建另一个observeSingleEventOfType 来查看用户是否关注该帖子。然后在这里面,我有所有的数据要存储在我的 Post 类中,看起来像

init(postKey: String, distance: Double, topComments: [Comment], liked: Bool, followingPost: Bool, dictionary: Dictionary<String, AnyObject>) {}

这是我的 Json 结构。

{
  "comments" : {
    "postKEY123" : {
      "CommentKEY123" : {
        "comment" : "aa"
      }
    }
  },
  "follow" : {
    "userId123" : {
      "postKEY123" : true
    }
  },
  "posts" : {
    "postKEY123" : {
      "commentCount" : 1,
      "postDescription" : "Aa",
      "likeCount" : 0,
      "userId" : "userId123"
    }
  },
  "users" : {
    "userId123" : {
      "email" : "user1@mail.com"
      "liked" : {
        "postKey123": true
       }
    },
  }
    "location" : {
    "postKey123" : {
      ".priority" : "9q9hrjj7cd",
      "g" : "9q9hrjj7cd",
      "l" : [ 37.33769226, -122.02885785 ]
    },
  },
}

我这样做的原因是Json数据没有嵌套。作为一种可能的替代方法,是否可以在后台获取帖子异步的所有数据并在该帖子的所有信息准备好时返回它?我不认为我能做到这一点,因为你无法保证什么时候回来。这就是为什么我在彼此的完成块中一一抓取数据的原因?

谢谢,

4

0 回答 0