Comment puis-je obtenir un serveur d'horodatage de Firebase iOS API?
J'ai une application iOS qui utilise Firebase et a actuellement quelques dictionnaires avec les clés que sont NSDate objets. Le problème évident est que NSDate tire de l'appareil de l'heure du système, qui n'est pas universelle.
Avec qui, quelle est la meilleure façon d'obtenir un serveur d'horodatage (similaire à Firebase.Valeurserveur.HORODATAGE de l'API Web) à l'aide de Firebase iOS API afin que je puisse trier mes clés de dictionnaire dans l'ordre chronologique?
Je suis également conscient de l'chronologique de la nature de l'Id généré par childByAutoID, mais je ne peux pas comprendre la bonne façon de classer ces dans le code. Alors qu'ils peuvent être retournés dans l'ordre chronologique, toutes les fois que quelque chose comme allKeys est appelé sur eux, l'ordre va à la fenêtre.
Toute aide avec ce problème serait grandement apprécié!
- Trouvé ce petit outil - github.com/freak4pc/NSDate-ServerDate - mais il serais toujours agréable de savoir s'il y a une solution Firebase offre pour cela.
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Dans Firebase 3.0 + Swift, vous pouvez utiliser
FIRServerValue.timestamp()
. En Objective-C, c'est[FIRServerValue timestamp]
.Dans Swift, vous pouvez maintenant utiliser
FirebaseServerValue.timestamp()
avec Firebase 2.0.3+ (3.0).L'équivalent pour
Firebase.ServerValue.TIMESTAMP
dans iOS estkFirebaseServerValueTimestamp
. Maintenant, cela ne fonctionne que pour Objective-C et pas Rapide.Dans Swift, vous pouvez créer vos propres mondiale timestamp avec
et alors vous serez en mesure d'utiliser
kFirebaseServerValueTimestamp
de la même manière.Mais vous ne pouvez utiliser ce que la valeur ou la priorité d'un nœud. Vous ne serez pas en mesure de le définir comme le nom de la clé (bien que, je ne crois pas que vous pourriez dans le Web API, soit).
En général, l'appel de
allKeys
sur un dictionnaire n'est pas garant de l'ordre. Mais si vous êtes en utilisantchildByAutoID
à un nœud, vous pouvez récupérer le bon de commande par la commande de l'NSArray retourné parallKeys
lexicographiquement. Quelque chose de ce genre:Ceci est similaire à un tri NSArray par ordre alphabétique, mais lors du tri de l'auto-Id générés, vous ne pas voulez localisée ou casse de tri, de sorte que vous utilisez
compare:
au lieu delocalizedCaseInsensitiveCompare:
De Firebase 4.0, vous pouvez utiliser Valeurserveur.timestamp()
par exemple:
Mise en garde: Semble que le timestamp est ajouté APRÈS votre objet est conservé dans Firebase. Cela signifie que si vous avez un .Valeur écouteur d'événement mis en place sur le lieu de votre objet est persistant, il sera déclenchée deux fois. Une fois de l'objet initial étant stockées dans l'emplacement, et de nouveau pour l'horodatage ajouté. Lutté avec ce problème pendant des jours 🙁
Informations utiles pour quelqu'un d'autre qui ne peuvent pas comprendre pourquoi leurs écouteurs d'événement de déclenchement sont deux fois/plusieurs fois!
Vous pouvez obtenir Timbre de Temps à l'aide de FIRServerValue.timestamp().
Mais, en Raison de FIRServerValue.timestamp() auditeur est appelé deux fois. L'auditeur va être appelé deux fois.