Swift Firebase检查用户是否在跟踪或跟踪状态
我正在构建一个firebase应用程序,在该应用程序中,我想区分用户是在同一个表视图中处于关注状态还是处于关注状态。例如,当前用户跟踪了另一个用户,并收到了一个跟踪用户。因此,我现在在表视图中有两个单元格,它们的用户相同,但状态不同。当前用户只想删除当前用户正在跟踪但当前用户未跟踪的其中一个单元格。因此,数据存储如下:Swift Firebase检查用户是否在跟踪或跟踪状态,swift,firebase,database-design,datasource,Swift,Firebase,Database Design,Datasource,我正在构建一个firebase应用程序,在该应用程序中,我想区分用户是在同一个表视图中处于关注状态还是处于关注状态。例如,当前用户跟踪了另一个用户,并收到了一个跟踪用户。因此,我现在在表视图中有两个单元格,它们的用户相同,但状态不同。当前用户只想删除当前用户正在跟踪但当前用户未跟踪的其中一个单元格。因此,数据存储如下: { "following" : { "OxUahgJPvXY9BPHT6dosmN46mGR2" : { "dBYQ4xHEmTfwHlZaFKKhLOA
{
"following" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true,
"aRRNDyXubTWN3llvTx0216hx1wx1" : true
}
},
"follower" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"aRRNDyXubTWN3llvTx0216hx1wx1" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true
}
}
}
当用户跟随当前用户时,它存储如下。所以,德比。。。有一个追随者OxU…,和OxU。。。正在跟踪dBY
{
"following" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"follower" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true
}
}
}
我正在编写一个方法,其中当前用户检查从“following”节点的表单元格中删除的用户id
问题是,如果当前用户与follower和follower具有相同的用户,那么在我的方法中,这两种情况下我都将为true,因此我不知道要删除哪个单元格。我是数据库新手,非常感谢您的帮助 需要更清楚地了解您想要实现的目标。您是在问如何在tableView中组织这些内容,例如,这是tableView或数据源问题,还是问如何组织这是Firebase?嗨@Jay,我是在问如何在swift中组织和谈论我的Firebase结构,例如,区分用户是否跟随当前用户,这是一个非常好的数据源!然后我们需要一些帮助来理解您的Firebase结构,因为问题中不清楚。记住——我们在不知道你在做什么或为什么的情况下看这个,所以结构需要清晰,并包括对节点之间关系的解释。我看到一个/follower节点的子节点是uid,然后是“current user$uid”的子节点:是的,但不清楚为什么它是这样构造的。要获取Firebase结构,请使用Firebase控制台->导出JSON,复制并粘贴结构的一个片段。@Jay我正在学习一个教程,它的结构是这样的,因为它可以快速检查我是否在跟踪用户,但问题是当我有一个表视图,通过观察添加的子用户来显示数据单元格时,根据节点的快照键返回用户,加载所有子节点后,删除用户单元格
extension TableViewController: UITableViewDataSource
{
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath)
{
let user = users[indexPath.row]
if editingStyle == .delete
{
// remove following or followed user when swipe to delete
let ref = Api.REF_FOLLOWING.child(Api.User.currentUserId).child(user.id!)
ref.observeSingleEvent(of: .value, with:
{
snapshot in
if let _ = snapshot.value as? NSNull
{
// user doesn't exist in following node
} else
{
// TWO of the same user ($uid) exists in following node and deletes both cells
// check if the relationship in "following" node is current user -> $uid or $uid -> current user
users.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
}
})
}
}
}