Trier un Array
Bonsoir à tous,
Quelle est votre méthode pour trier par date de la plus récente à la plus ancienne et avec le moins d'instructions possibles ce tableau :
["février 2017", "mars 2017", "mai 2017", "janvier 2017", "avril 2017"]
sachant que j'ai obtenu ce tableau avec cette instruction :
let allKeys = Set<String>(arrayOfNews.filter({!$0.section.isEmpty}).map{$0.section})
pour n'avoir qu'une fois les mois même si j'avais plusieurs news avec février 2017 par exemple.
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Créer un DateFormatter pour transformer ces String en Date.
Utiliser sorted et comparer ces dates.
Car sinon, comparer les String, ça n'a pas de sens, car "janvier" se trouve après "février" si on classe par ordre de "char" (alphabétiquement), et l'année n'est pas prise en compte.
Donc, il faut bien passer par des dates, et en Swift, les dates peuvent aisément utiliser "<" pour être comparées (appel en douce sur son timeStamp qui doit être un TimeInterval et donc juste appliquer "<" sur un Double). Ce qui n'est pas le cas en Objective-C, il aurait fallut utiliser compare:
Tester dans playground sans être développeur Swift (donc oust les règles wrapp, ? et !), c'est plus pour la logique qu'autre chose.
Output:
En Objective-C pour faire zoli et parce que j'aime les crochets et les blocks de filter/sort
Et, après que l'on a vérifié la conversion, on pourrait réduire le code en Swift à :
Merci pour les codes !
plutôt une flatMap pour éviter le force unwraping!
Yesss !