Quickblox 邮件排序 date_sent/dateSent

Quickblox message sort on date_sent/dateSent

我使用 Quickblox iOS 有一段时间了。到目前为止,一切似乎都运行良好。我只面临一个问题,即在一秒钟内发送 fast/quick 条消息,如 4,5 条消息,然后排序成为一个问题,因为 date_sent/dateSent对所有消息都相同。即使在 QBChatMessages 的自定义属性中,整数形式的 date_sent 在同一秒发送时对所有 4,5 条消息显示相同的数字。

谁能指导我如何对邮件进行排序?尽管 chatdidReceivemessage 确实按排序顺序接收消息,但我可以将消息保存在 NSArray 中,因为它是为了保留顺序。但是一旦我尝试保存在 Coredata 中并根据 date_sent/dateSent 取回,顺序就不会保留。

是的,Quickblox 确实将消息发送日期存储为整数值。但是有一个解决方案适合您。您不仅应该按发送日期对邮件进行排序,还应该按 ID 字段对邮件进行排序。 ID 字符串包含诸如发送日期、唯一机器标识符等内容。您可以查看有关 mongoDBID 如何工作的更多详细信息 here

这是一个示例代码片段(来自 QMServices 项目):

NSMutableOrderedSet *datasource = [self dataSourceWithDialogID:dialogID];

NSSortDescriptor *dateSentDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"dateSent" ascending:YES];
NSSortDescriptor *idDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"ID" ascending:YES];

[datasource sortUsingDescriptors:@[dateSentDescriptor, idDescriptor]];

长话短说,为了对具有相同 dateSent 值的消息进行排序,请按其 ID 字符串进行比较。