Swift - Как мне пропустить .childRemoved при использовании Firebase Query? - PullRequest
0 голосов
/ 11 декабря 2018

Мое приложение имеет несколько комнат чата, построенных с использованием Swift и Firebase.

В некоторых из этих комнат может быть несколько сотен сообщений, в то время как в более популярных комнатах их более 10000.

IЯ использую запрос для ограничения до последних 100.

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

Есть ли способ изменить мой код ниже?:

    self.chatsRef = ref.child("ABC").child(xyz)

    self.chatsRef.queryLimited(toLast: 100).observe(.value, with: { snapshot in
        self.data.removeAll()

        self.hideProgressHUD()

        for item in snapshot.children {
            if let child = item as? DataSnapshot {
                if let dict = child.value as? NSDictionary {
                    self.shouldAdd = true

                    // filter our flagged messages
                    // set shouldAdd to false if flagged

                    // filter our blocked users
                    // set shouldAdd to false if blocked user

                    // only add if appropriate
                    if self.shouldAdd {
                        self.messageData.append(dict)
                    }
                }
            }


            // reload the tableview
            DispatchQueue.main.async {
                self.refreshControl.endRefreshing()
                self.chatRoomTableView.reloadData()
            }
        }
    })

ОБНОВЛЕНИЕ:

Если после этого я позвоню .childAdded, то он добавит все сообщения.Я хотел бы ТОЛЬКО добавить то, что пользователь вводит после загрузки последних 100.

ОБНОВЛЕНИЕ 2:

Если я попытаюсь выполнить запрос .childAdded для запуска в конце первого запроса (который получает последние 100), я получу скачок памяти.

ОБНОВЛЕНИЕ 3: Если я использую .childAdded & .childRemoved, как я могу независимо вызывать эти вызовы против .childRemoved, вызываемого непосредственно перед .childAdded?

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