FIRServerValue.timestamp()
によって作成されたオブジェクトのダウンロードされたタイムスタンプは、オンラインバージョンとわずかに異なります。私のコード:私は時々それが持っているにもかかわらず、メッセージを別のメッセージの前に来てバグに遭遇Firebase:FIRServerValue.timestamp()によって作成されたダウンロードされたタイムスタンプは、オンラインバージョンとわずかに異なります
text: Optional("1") - timestamp: 1471596374007.0 -> 1471596374874
text: Optional("2") - timestamp: 1471596375044.0 -> 1471596375324
text: Optional("3") - timestamp: 1471596376157.0 -> 1471596376461
text: Optional("4") - timestamp: 1471596461213.0 -> 1471596463220
text: Optional("5") - timestamp: 1471596542659.0 -> 1471596543307
:
let messagesRef = self.ref.child("messages").child(chatId)
messagesRef
.queryOrderedByChild("timestamp")
.queryLimitedToLast(500)
.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
guard let object = snapshot.value as? [String: AnyObject] else { return }
let messageId = snapshot.key
if let
senderId = object["senderId"] as? String,
senderName = object["senderName"] as? String,
senderEmail = object["senderEmail"] as? String,
timestamp = object["timestamp"] as? NSTimeInterval {
let date = timestamp.toDate()
let text = object["text"] as? String
print("text: \(text) - timestamp: \(timestamp)")
}
})
ここでは、(->
でマーク)オンライン値に比べてサンプル出力ですその特定のメッセージの後に送信されました。私はそれがこの振る舞いと関係があると考えています。検索されたタイムスタンプが正確でない場合、時間的に互いに近くに送信されたメッセージは、異なる順序で並べ替えることができます。
"オンラインバリュー"とはどういう意味ですか? – cartant
リアルタイムデータベースに保存された値。 – MJQZ1347
「オンライン値」はFirebaseコンソールに表示される値ですか?新しいメッセージを作成するとき、または既存のメッセージを読むときに「オンライン値」とは異なる 'timestamps'を含む' ChildAdded'イベントが発生していますか? – cartant