Фон:
В настоящее время я получаю все документы в коллекции с помощью запроса и отображаю их по порядку, сортируя их по значению поля ( timestamp ) в документе.
Проблема:
В моей коллекции базы данных firebase для значения поля, которое я использую как параметр сортировки, некоторые в формате строка , а некоторые в формате число . - Следовательно, это возвращает ошибку, поскольку вы не можете сравнивать числа и строку.
Example of the field-val:
Field Value in Document 1(timestamp): "12345654"
Field Value in Document 2(timestamp): 234234234
[Я понимаю, что это должно быть исправлено в самой базе данных, но есть ли способ сделать это?]
Вопрос:
Есть ли способ отсортировать только единицы в числовом формате и показать их отдельно? Как запрос, который выбирает документ с число в качестве формата значения поля и отображает их в отсортированном порядке?
Текущая реализация:
safeID = UserDefaults.standard.value(forKey: "safeIDs") as? String ?? ""
self.listener = self.firebaseDatabase.collection("notifications").whereField("safeID", isEqualTo: safeID).order(by: "timestamp", descending: true).addSnapshotListener { snapshot, error in
UIView.transition(with: self.notificationsTableView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.notificationsTableView.isHidden = true
self.loadingIndicator.startAnimating()
}, completion: nil)
DispatchQueue.main.async {
guard let documentSnapshot = snapshot else {
print("Error getting documents: \(error!)")
return
}
self.notifications = documentSnapshot.documents
UIView.transition(with: self.notificationsTableView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.loadingIndicator.stopAnimating()
self.notificationsTableView.isHidden = false
}, completion: nil)
self.notificationsTableView.reloadData()
}
}