Упорядочить табличную ячейку по метке времени ребенка - PullRequest
0 голосов
/ 20 февраля 2019

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

        self.user.removeAll()
        for child in DataSnapshot.children.allObjects as! [DataSnapshot] {
            print("Processing user \(child.key)")

            let value = child.value as? NSDictionary
            //if country == "UNITED STATES"{
            if let uid = value?["userID"] as? String{
                if uid != Auth.auth().currentUser!.uid {
                    //
                    let userToShow = User()
                    if let fullName = value?["username"] as? String , let imagePath = value?["photoURL"] as? String{
                        userToShow.username = fullName
                        userToShow.imagePath = imagePath
                        userToShow.userID = uid
                        self.user.append(userToShow)
                    }

                }
            }
        }

1 Ответ

0 голосов
/ 20 февраля 2019

Как только вы позвоните DataSnapshot.value, вы преобразуете данные в снимке в словарь.И порядок, если ключи в этом словаре не гарантированы.

Чтобы поддерживать порядок элементов при их возврате из базы данных, вам нужно перебрать DataSnapshot.children.Посмотрите эти вопросы для примеров того, как это сделать:


Для вашего кода это будет выглядеть примерно так:

ref.child("users").queryOrdered(byChild: "timestamp").observeSingleEvent(of: .value, with: { snapshot in

    self.user.removeAll()

    for child in snapshot.children.allObjects as [DataSnapshot] {
        print("Processing user \(child.key)")

        let value = child.value as? NSDictionary

        if let uid = value["userID"] as? String {
            ...
        }
    }


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