web-dev-qa-db-fra.com

Comment trier en utilisant Realm?

Je ne sais pas comment trier avec Realm. Mon code actuel est.

data = realm.objects(WorkoutSet)
data = data!.sorted("date")

Je veux trier date an Int des nombres élevés aux nombres faibles. Les docs ont besoin de plus d’informations et le lien GitHub envoie un message 404.

14
Cody Weaver

Vous pouvez ajouter un paramètre ascending à la méthode sorted:

data = data!.sorted("date", ascending: false)

Ceci trie votre WorkoutSet en utilisant le champ de date par ordre décroissant.

Mettre à jour

Avec Swift 3 et la dernière version de RealmSwift, cela est désormais:

data = data!.sorted(byKeyPath: "date", ascending: false)

Si vous souhaitez évaluer vous-même les critères de tri, vous pouvez utiliser: 

data = data!.sorted(by: { (lhsData, rhsData) -> Bool in
   return lshData.something > rhsData.something
})

Sachez cependant que le tri de vos résultats par vous-même renvoie un objet Array au lieu d'un objet Realm Results. Cela signifie qu'il y aura une surcharge de performances et de mémoire, car Results est paresseux et si vous triez avec la méthode ci-dessus, vous perdrez ce comportement paresseux car Realm doit évaluer chaque objet! Vous devez vous en tenir aux résultats autant que possible. Utilisez la méthode ci-dessus uniquement s'il n'y a pas d'autre moyen de trier vos éléments.

43
joern