Попытка отсортировать массив снимков по createdAt. Сложность, поскольку Google изменил формат даты на TimeStamp
Я попытался преобразовать метку времени в дату, используя Timestamp.dateValue()
Я использовал это, которое работало, когда они использовали Date
self.tableData = self.tableData.sorted(by: {
$0["createdAt"] as! Date > $1["createdAt"] as! Date })
Я пытался использовать это с Timestamp, так как вы не можете сортировать непосредственно по Timestamp - я не могу заставить его работать или иметь правильный синтаксис...
self.tableData = self.tableData.sorted(by: {
$0["createdAt"] as Timestamp.dateValue() as! Date >
$1["createdAt"] as Timestamp.dateValue() as! Date })
Любая помощь будет оценена по достоинству. Есть идеи, почему Google изменился с даты на метку времени? Это усложняет сортировку. Я знаю, что вы можете сортировать во время запроса, но мне нужно сортировать по запросу базы данных.
1 ответ
Я сделал это, как показано ниже: -
При отображении данных сопоставьте их как переменную типа даты: -
let createdAt : Date? = snapshotValue["createdAt"] as? Date
И затем я сортирую массив, как показано ниже: -
let currentArr = commentsArray.sorted(by: { $0.createdAt!.compare($1.createdAt!) == .orderedDescending })
ИЛИ
Вы можете получить отсортированные данные напрямую, как показано ниже:
Firestore.firestore().collection(“samples”).order(by: "createdAt", descending: true).whereField(“sampleId”, isEqualTo: sampleId).addSnapshotListener({ (querySnapSHot, error) in })
Похожие вопросы
Новые вопросы
swift
Swift — это язык программирования общего назначения, разработанный Apple Inc., впервые выпущенный в 2014 году для своих платформ и Linux. Swift имеет открытый исходный код. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [swiftui], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или рамки.