【发布时间】:2018-09-01 10:17:12
【问题描述】:
我正在调用“关注”的孩子,并查看登录用户的 UID 是否存在,并且是否有登录用户正在关注的另一个用户的孩子。
我正在将登录用户正在关注的人打印到表格视图中。第一个问题是我的代码,因为我知道在彼此之间有两个 firebase 调用是不好的做法,所以我需要有人教我一个更好的方法。由于糟糕的代码,当我取消关注其他用户并返回显示他们关注的登录用户列表的选项卡时,它显示了这一点(下图)。当登录的用户没有关注任何人时,它应该只显示“对不起!”文本,但仍保留用户关注的人。需要有人教我一种更好的方法来进行这种类型的 firebase 调用。代码和firebase JSON堆栈图像如下......在firebase JSON堆栈图像中,扩展的UID是登录用户,子用户是登录用户关注的另一个用户。我需要一种更好的方法来调用和提取这些信息,我只是不知道如何做。
func getFollowingData() {
Database.database().reference().child("following").child(uid!).observe(DataEventType.value, with: { (snapshot) in
if snapshot.exists() {
print("Got Snapshot")
Database.database().reference().child("following").child(self.uid!).observe(.childAdded, with: { (snapshot) in
if snapshot.exists() {
print(snapshot)
let snapshot = snapshot.value as? NSDictionary
self.listFollowing.append(snapshot)
self.followingTableView.insertRows(at: [IndexPath(row:self.listFollowing.count-1,section:0)], with: UITableViewRowAnimation.automatic)
self.followingTableView.backgroundView = nil
}
})
} else {
print("No Snapshot")
self.followingTableView.backgroundView = self.noDataView
}
})
}
【问题讨论】:
-
“在彼此之间有两个 firebase 调用是不好的做法”为什么你认为这是一个不好的做法?我并不是说这不是顺便说一句,但我想在接受它作为一揽子声明之前先看看其中的原因。
-
我刚刚被告知,但他们可能是错的,给了我不好的信息
-
好的。因此,在这种情况下,让我们专注于代码。当您运行您共享的 sn-p 时,该代码有什么问题?
-
问题是在用户离开并取消关注使tableview为空并显示backgroundView的人后,tableview需要重新加载。目前,它就像我发布的图片,但是当我返回并再次关注并返回以下列表时,现在有用户的重复单元格
-
我试过做一个 .removeAll 和一个 viewWillAppear,但都没有工作。
标签: ios swift firebase firebase-realtime-database