Trier les objets dans le tableau par date
J'ai un tableau contenant un objet appelé HistoryObject
et il possède des propriétés telles que "date", "nom", etc.
Je suis de tri le tableau comme suit:
let sortedArray = HistoryArray.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedDescending})
qui est censé trier la date du plus récent au plus ancien. Par exemple:
- 30 juin 2016
- Jun 29, 2016
etc..
Mais quand mon tableau contient "Jul 2, 2016" le tableau trié devient:
- 30 juin 2016
- Jun 29, 2016
- Jul 2, 2016
Où "Jul 2, 2016" devrait être sur le dessus après le tri, maintenant, c'est sur le fond? Comment puis-je résoudre ce problème?
source d'informationauteur Nata Mio
Vous devez vous connecter pour publier un commentaire.
L'utilisation de Swift 4 & Swift 3
L'Utilisation De Swift 2
Par exemple, vous avez le tableau avec les dates et l'autre 1 tableau, où vous allez enregistrer le converti dates:
Après que nous convertir les dates:
Et le résultat:
Pour Swift 3
Éviter variable supplémentaire de convertedArray
L'utilisation de Swift 4 & Swift 3
Vous avez un tableau
historyArray
qui contient un tableau deHistoryObject
. ChaqueHistoryObject
contient une chaîne de date sous la forme "dd MM yyyy"Vous souhaitez trier vos histoire les objets par leurs valeurs de date.
Pour le faire efficacement, vous devez d'abord obtenir
Date
valeurs pour tous les objets. Une façon de le faire serait d'ajouter un paresseuxDate
var à votre Histoire de l'objet, qui est calculé à partir de la date de chaîne. Si vous ne voulez pas le faire vous pouvez:un DateFormatter.
zip()
fonction de combiner le tableau de l'histoire des objets et desle tableau de la date d'objets dans un tableau de n-uplets.
Le code pour faire cela pourrait ressembler à quelque chose comme ceci:
Version 1
Si vous ajoutez un
lazy var date
à votre HistoryObject le tri code est BEAUCOUP plus simple:Version 2: