Можно ли отобразить «имя» узла Firebase, а также его значение в XCode? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь отобразить идентификаторы пользователей в моем приложении, однако идентификаторы UID очень случайны и рядом с каждым из них находится имя. Можно ли показать как имя узла, так и его значение?

Моя база данных Firebase

enter image description here

Я хочу отобразить имя "Энди", а также UID "uLUnOelxABYl3lCtLz2Of5Yfnvc2"

Я настроил его так, чтобы приложение получало значения из моей Firebase.

Вот мой код:

class TestViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return list.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        cell?.textLabel?.text = list[indexPath.row]
        return cell!
    }


    @IBOutlet weak var tableView: UITableView!

    var ref: DatabaseReference!

    var list = [String] ()

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self


        if FirebaseApp.app() == nil {
            FirebaseApp.configure() }

        ref = Database.database().reference()

        ref?.child("users").observe(.childAdded, with: { (snapshot) in

            let list1 = snapshot.value as? String
            if let actualList = list1 {
                self.list.append(actualList)

                self.tableView.reloadData()
            }
        }
     )
    }
}

Вот что я получаю. Однако я хочу показать список имен с этими значениями рядом, как это (фотошоп) Результаты

РЕЗУЛЬТАТЫ ФОТОСАЛОНА

1 Ответ

0 голосов
/ 08 мая 2019

Относительно документации FIRDataSnapshot имеет свойство ключ , поэтому я думаю, что вы можете использовать его для сопоставления со значениями, например:

/// e.g. use dictionary instead of Array
//var list = [String] ()
var list = [AnyHashable: String]()
...

ref?.child("users").observe(.childAdded, with: { (snapshot) in

        let key = snapshot.key as? Hashable
        let value = snapshot.value as? String
        if let actualValue = value, let actualKey = key {
            self.list[key] = actualValue
            self.tableView.reloadData()
        }
    }
...