2016-04-19 4 views
1

私は使用していますQuickbloxのiOSしばらくあります。これまでのところすべてが正常に動作しているようです。つまり、1秒に4,5メッセージのような速い/速いメッセージを送信している間は、date_sent/dateSentがすべてのメッセージで同じになるため、並べ替えが問題になります。 QBChatMessagesのカスタム属性でも、整数で表されるdate_sentは、同じ秒で送信されたときのすべての4,5メッセージに対して同じ番号を示します。quickbloxメッセージのソートをdate_sent/dateSent

誰でもメッセージの並べ替え方法を教えてください。 chatdidReceiveMessageはソートされた順番でメッセージを受け取りますが、NSArrayにメッセージを保存することができます。順序を保持するためです。しかし、一度私はCoredataに保存し、date_sent/dateSentに基づいて戻ってフェッチすると、その注文は保存されません。

+0

@Igor Khomenkoこの問題についてお手伝いできますか? –

答えて

0

はい、Quickbloxは日付のメッセージを整数値として送信しました。しかし、あなたのための解決策があります。送信された日付だけでなく、IDフィールドでもメッセージをソートする必要があります。 ID文字列には、送信された日付、固有のマシン識別子などが含まれています。mongoDBIDの動作方法の詳細は、hereを参照してください。

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の文字列でそれらを比較:ここ

はあなたのためのサンプルコードスニペットは、(QMServicesプロジェクトから)です。

+0

ありがとうございました。それは素晴らしかった!私はそれを受け入れられた答えとしてマークしています。しかし、メッセージそのものにミリ秒のタイムスタンプが何もない理由について説明できますか?理由は何でしょうか? –

+0

これは、Quickbloxサーバー・アーキテクチャーの機能です。 –

関連する問題