Невозможно извлечь и напечатать одно значение из базы данных Firebase с помощью Swift 5 (iOS) - PullRequest
1 голос
/ 05 апреля 2020

Цель: Попытка распечатать значение «email» из моей базы данных Firebase Realtime в консоль XCode 11. Пожалуйста, ознакомьтесь с предоставленным кодом и JSON выдержкой.

Комментарий: Вопрос, который кажется довольно очевидным, однако после попытки нескольких предложений, включая Swift Get Specifi c Значение из базы данных Firebase и Firebase документация, я все еще, кажется, что-то упустил.

Код:

func updateRiskValue() {

    var databaseReference: DatabaseReference!

    databaseReference = Database.database().reference()

    let currentUser = Auth.auth().currentUser
    databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: { (snapshot) in

        let value = snapshot.value as? NSDictionary

        let valueRisk = value?["email"] as? String ?? ""

        print(valueRisk)

    }) {(error) in
        print(error.localizedDescription)
    }
}

@IBAction func riskSlider(_ sender: UISlider) {

    updateRiskValue()

}

JSON Выдержка:

"users" : {
"ihhqjBDfIYeyl5QqsnFl1LVrXRG3" : {
  "email" : "alexander@gmail.com",
  "isCheckedCount" : 3,
  "kycitems" : {
    "Attach Government Documents" : {
      "isChecked" : false
    },
    "Client Knowledge" : {
      "isChecked" : true
    },
    "Contact Information" : {
      "isChecked" : true
    },
    "PEP Check" : {
      "isChecked" : true
    },
    "Risk Assessment" : {
      "isChecked" : true
    },
    "Source of Wealth" : {
      "isChecked" : true
    },
    "Transit Account Holders" : {
      "isChecked" : true
    },
    "Transit Account Numbers" : {
      "isChecked" : false
    }
  },
  "password" : "123123",
  "riskValue" : "1",
  "todos" : {
    "Hello" : {
      "isChecked" : false
    }

1 Ответ

1 голос
/ 05 апреля 2020

Вы добавляете наблюдателя в /Users/$uid/email, поэтому snapshot, который вы получаете, содержит только значение свойства email. Однако вы воспринимаете это словарь, который объясняет, почему ваш код не работает.

Чтобы исправить это, получите простое значение из

databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: { (snapshot) in

    let valueRisk = snapshot.value as? String
    print(valueRisk)

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