Я создаю приложение Firebase, в котором я хочу различить guish, если пользователь имеет следующий или следующий статус в том же табличном представлении. Например, текущий пользователь подписался на другого пользователя и получил следующего пользователя. Итак, теперь у меня есть две ячейки в табличном представлении с одним и тем же пользователем, но с разными статусами. Текущий пользователь хочет удалить только одну из ячеек, за которой следует текущий пользователь, но не пользователь, за которым следует текущий пользователь. Таким образом, данные хранятся следующим образом:
{
"following" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true,
"aRRNDyXubTWN3llvTx0216hx1wx1" : true
}
},
"follower" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"aRRNDyXubTWN3llvTx0216hx1wx1" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true
}
}
}
Когда пользователь следует за текущим пользователем, он сохраняется, как показано ниже. Итак, у dBY ... есть последователь OxU ..., а OxU ... следует за dBY ...
{
"following" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : true
},
"follower" : {
"dBYQ4xHEmTfwHlZaFKKhLOA3uuC2" : {
"OxUahgJPvXY9BPHT6dosmN46mGR2" : true
}
}
}
Я пишу метод, в котором текущий пользователь проверяет удаленный идентификатор пользователя. из ячейки таблицы в «следующем» узле.
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)
}
})
}
}
}
Проблема в том, что если текущий пользователь имеет того же пользователя, что и подписчик, то я получу истинное значение для обоих случаев в моем методе, поэтому я не буду знать, какую ячейку удалить. Я новичок в базах данных и буду признателен за любую помощь!