我正在使用firebase和swift等应用程序上的应用程序。我的问题是我发现自己嵌套了我的firebase“observeSingleEventOfType”来获取我需要的所有数据,这样我就可以把它放在我的“Post Class”中。我想知道是否有更好的方法,因为它似乎只需要花费很多时间来加载一个帖子? (我正在抓取一个信息,等待,然后抓住下一个,等待,然后抓住下一个,等待,抓住下一个......并将所有内容作为一个邮件项目放在链的末尾)
初次加载时,我需要位置,热门评论,用户是否喜欢帖子,用户是否关注帖子。目前我正在做的是
- >创建地理位置查询,抓取地理信息。在完成块内,我有一个observeSingleEventOfType来查找来自我的帖子节点的信息并存储为字典。在完成块的内部,我创建另一个observeSingleEventOfType调用以获取顶部注释,然后在此completionblock中,我创建另一个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数据没有嵌套。作为一种可能的替代方法,是否可以在后台获取后期异步的所有数据,并在该帖子的所有信息都准备好后返回它?我不认为我能做到这一点,因为你无法保证项目回来的时间和内容。这就是为什么我在彼此的完成块内逐个抓取数据的原因?
谢谢,