Вы можете попробовать:
let cal = Calendar.current
let groupedMessages = Dictionary(grouping: self.chatMessages, by: { cal.startOfDay($0.tsp) })
let keys = groupedMessages.keys.sorted(by: { $0 > $1 })
Это, однако, даст вам словарь вроде:
[
SomeDateHere: [
ChatMessage(id: 0, sender: User?, message: "String", seen: 1),
ChatMessage(id: 0, sender: User?, message: "String", seen: 1)
],
AnotherDateHere: [
ChatMessage(id: 0, sender: User?, message: "String", seen: 1)
]
Затем вы можете использовать ключи, чтобы вернуть счетчик разделов:
return keys.count
И получить массив сообщений для каждого элемента словаря, например, так:
let key = keys[indexPath.section]
let messages = groupedMessages[key].sorted(by: { $0.tsp > $1.tsp })
Или получить только счет:
let key = keys[indexPath.section]
return groupedMessages[key].count