我已经为iOS使用Quickblox一段时间了。到目前为止,一切似乎都很顺利。我只面临一个问题,即在一秒钟内发送4.5条快速/快速消息时,由于所有消息的date_sent/dateSent都相同,排序就成了一个问题。即使在QBChatMessages的自定义属性中,当在同一秒内发送时,整数形式的date_sent也会为所有4.5条消息显示相同的数字。
有人能指导我如何分类信息吗?尽管chattidReceivemessage确实按排序顺序接收消息,但我可以将消息保存在NSArray中,因为这是为了保持顺序。但是,一旦我尝试保存在Coredata中并根据date_sent/dateSent取回,订单就不会被保留。
是的,Quickblox确实将消息的发送日期存储为整数值。但有一个适合你的解决方案。您不仅应该根据发送日期,还应该根据ID字段对邮件进行排序。ID字符串包含诸如发送日期、唯一的机器标识符等内容。您可以在此处查看有关mongoDBID如何工作的更多详细信息。
以下是您的示例代码片段(来自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字符串进行比较。