Получение данных для конкретного пользователя с использованием FireBase - PullRequest
0 голосов
/ 23 марта 2019

Я создаю приложение посещаемости и пытаюсь получить данные из базы данных Firebase для каждого конкретного пользователя.Есть два пользователя 16BCA1278 и 16BCA1282.

Это правила firebase, они работают в имитаторе firebase, но когда я пытаюсь получить доступ через свое приложение, используя идентификатор пользователя, он говорит, что разрешение отклонено.Я пытаюсь загрузить значения в каждую конкретную ячейку. Как это исправить?Пожалуйста, помогите, спасибо за любой.

Это моя база данных:

enter image description here

enter image description here

Правила Firebase:

{
   "rules":{
      "16BCA1278":{
         "$uid":{
            ".read":"'dbgrYQ6v55QskngJnTyNdYixq142' === auth.uid",
            ".write":false,

         }
      },
      "16BCA1282":{
         "$uid":{
            ".read":"'PZXe2wiCQvS90zjWcmvcMZfD1dq2' === auth.uid",
            ".write":false,

         }
      }
   }
}

Это мой быстрый код:

class AttendanceViewController: UITableViewController {

@IBOutlet weak var logoutButton: UIBarButtonItem!

var calledValues = [Attendance]()

override func viewWillAppear(_ animated: Bool) {

    tableView.dataSource = self

    tableView.delegate = self

    let loginAlert = UIAlertController(title: "Welcome!", message: "", preferredStyle: .alert)

    loginAlert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

    self.present(loginAlert, animated: true, completion: nil)

    super.viewWillAppear(animated)

    var ref:FIRDatabaseReference!

    ref = FIRDatabase.database().reference()

    let userID = FIRAuth.auth()?.currentUser?.uid

    ref.child("uic-attendance-system-3817d").queryOrdered(byChild: "user_id").queryEqual(toValue: userID).observe(.childAdded, with: { (snapshot) in

        let results = snapshot.value as? [String : AnyObject]

        let date = results?["Date"]
        let csa = results?["Computer System Architecture"]
        let mad = results?["Mobile Application Development"]
        let mpi = results?["Microprocessor and Interfacing"]
        let st = results?["Software Testing"]
        let madlab = results?["Mobile Application Development Lab"]
        let mpilab = results?["Microprocessor and Interfacing Lab"]

        let myCalls = Attendance(date: date as! String?, csa: csa as! String?, mad: mad as! String?, mpi: mpi as! String?, st: st as! String?, madlab: madlab as! String? , mpilab: mpilab as! String?

        )

        self.calledValues.append(myCalls)

        DispatchQueue.main.async {

            self.tableView.reloadData()

        }

    }) { (error) in

        print(error.localizedDescription)

    }

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let dataCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! AttendanceCell

    let values = calledValues[indexPath.row]

    dataCell.dataLabel?.text = values.date
    dataCell.csaLabel?.text = values.csa
    dataCell.madLabel?.text = values.mad
    dataCell.mpiLabel?.text = values.mpi
    dataCell.stLabel?.text = values.st
    dataCell.madlabLabel?.text = values.madlab
    dataCell.mpilabLabel?.text = values.mpilab

    return dataCell

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return calledValues.count

}

@IBAction func logoutAction(_ sender: Any) {

    let loginvc = self.storyboard!.instantiateViewController(withIdentifier: "loginvc")

    do {

        try FIRAuth.auth()?.signOut()

        self.present(loginvc, animated: true, completion: nil)

    } catch {

        print(error)

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