Firebase проверка, если пользователь следит или следит за состоянием - PullRequest
0 голосов
/ 08 января 2020

Я создаю приложение 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)
            }
        })
        }
    }
}

Проблема в том, что если текущий пользователь имеет того же пользователя, что и подписчик, то я получу истинное значение для обоих случаев в моем методе, поэтому я не буду знать, какую ячейку удалить. Я новичок в базах данных и буду признателен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...