Как извлечь данные из базы данных и показать конкретные данные? - PullRequest
0 голосов
/ 09 октября 2019

Я устанавливаю функцию, которая позволяет пользователю получать данные, которые они хранят в базе данных. Когда пользователь вводит значение данных, он проверяет и отображает данные для пользователя, когда информация уже хранится в базе данных. Как я могу получить данные с помощью поиска 'icNumber' и отобразить все данные, которые под этим дочерним значением?

Вот снимок экрана того, чего я пытаюсь достичь.

И наконец, вот мой код

func displayRecord() {
        //guard let uid = Auth.auth().currentUser?.uid else { return }
        Database.database().reference().child("Patient_Data").observeSingleEvent(of: .value) { (snapshot) in
            guard let name = snapshot.value as? String else { return }
            guard let icNumber = snapshot.value as? String else { return }
            guard let gender = snapshot.value as? String else { return }
            guard let phoneNumber = snapshot.value as? String else { return }
            guard let medicationAllergic = snapshot.value as? String else { return }
            guard let smokerRecord = snapshot.value as? String else { return }
            self.welcomeLabel.text = "Name, \(name)"
            self.welcomeLabel.text = "IC Number, \(icNumber)"
            self.welcomeLabel.text = "Gender, \(gender)"
            self.welcomeLabel.text = "Phone Number, \(phoneNumber)"
            self.welcomeLabel.text = "Medication Allergic, \(medicationAllergic)"
            self.welcomeLabel.text = "Smoker Record, \(smokerRecord)"

            UIView.animate(withDuration: 0.5, animations: {
                self.welcomeLabel.alpha = 1
            })
        }
    }

1 Ответ

0 голосов
/ 09 октября 2019

Возможно, вы захотите изменить свой displayRecord метод на получение идентификатора записи ("-Lq_y67Rndy3BLyaKA7Q"), чтобы вы видели только одну запись за раз вместо данных каждого пациента в вашей системе. Затем вам нужно преобразовать значение снимка в словарь, соответствующий типам, хранящимся в вашей базе данных. Это строка guard let dict = snapshot.value as? [String:String] else { return }.

func displayRecord(entryId: String) {
    Database.database().reference().child("Patient_Data/\(entryId)").observeSingleEvent(of: .value) { (snapshot) in

        guard let dict = snapshot.value as? [String:String] else { return }

        let name = dict["name"]
        let icNumber = dict["icNumber"]
        let gender = dict["gender"]
        let phoneNumber = dict["phoneNumber"]
        let medicationAllergic = dict["medicationAllergic"]
        self.welcomeLabel.text = "Name, \(name)"
        self.welcomeLabel.text = "IC Number, \(icNumber)"
        self.welcomeLabel.text = "Gender, \(gender)"
        self.welcomeLabel.text = "Phone Number, \(phoneNumber)"
        self.welcomeLabel.text = "Medication Allergic, \(medicationAllergic)"
        self.welcomeLabel.text = "Smoker Record, \(smokerRecord)"

        UIView.animate(withDuration: 0.5, animations: {
            self.welcomeLabel.alpha = 1
        })
    }
}

Кажется, вы думаете, что значение вашего снимка будет иметь тип String. Это должно быть причиной того, что вы приводите значение в виде строки к нескольким свойствам (нет смысла делать это, даже если значение вашего снимка было строкой).

Возможно, вы также захотите рассмотреть, все лиэти значения должны храниться в виде строк на вашем сервере.

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