S'amuser avec YOLOKit

L'énumération des collections dans Objective-C est souvent prolixe et maladroite. Si vous avez l'habitude de Ruby ou avez travaillé avec Underscore ou Lo-Dash en JavaScript, vous savez qu'il existe des solutions plus élégantes. C’est exactement ce que pensaient les créateurs de YOLOKit en créant cette bibliothèque géniale. Le slogan de YOLOKit est Énumérer délicatement la Fondation et ils le pensent.

1. Installation

L'ajout de YOLOKit à un projet Xcode est très facile avec CocoaPods. Incluez le pod dans le fichier podfile de votre projet, exécutez pod update depuis la ligne de commande et importer YOLO.h où vous voulez utiliser YOLOKit.

Si vous n'utilisez pas CocoaPods, téléchargez la bibliothèque à partir de GitHub, ajoutez les fichiers pertinents à votre projet et importez l'en-tête de YOLOKit..

2. Utiliser YOLOKit

YOLOKit a beaucoup à offrir, mais dans cette astuce, je ne me concentrerai que sur quelques-unes des méthodes de YOLOKit dans son répertoire..

Minimum et maximum

Commençons simplement par l'extraction des valeurs minimale et maximale d'un tableau. Jetez un coup d'œil à l'extrait de code suivant pour voir comment cela fonctionne..

NSArray * numbers = @ [@ (1), @ (2), @ (45), @ (- 12), @ (3.14), @ (384)]; // identifiant minimal min = nombres.min (^ (NSNumber * n) return n.intValue;); id max = nombres.max (^ (NSNumber * n) return n.intValue;); NSLog (@ "\ nMIN% @ \ nMAX% @", min, max);

L'extrait de code ci-dessus génère le résultat suivant.

MIN -12 MAX 384

La syntaxe peut sembler étrange et vous vous demandez peut-être pourquoi min et max prendre un bloc, mais cela ajoute plus de puissance à ces méthodes. Vous pouvez faire ce que vous voulez dans le bloc pour déterminer la valeur minimale et maximale du tableau. L’exemple suivant devrait clarifier cette.

NSArray * words = @ [@ "this", @ "est", @ "a", @ "exemple", @ "pour", @ "tout le monde"]; // identifiant minimal le plus court = words.min (^ (NSString * n) return (NSInteger) n.length;); id le plus long = mots.max (^ (NSString * n) return (NSInteger) n.length;); NSLog (@ "\ nSHORTEST% @ \ nLONGEST% @", le plus court, le plus long);

Cet extrait de code entraîne la sortie suivante.

Plus court un plus long tout le monde

YOLOKit est flexible et ne se plaint pas du type des arguments de blocage. Cependant, pour satisfaire le compilateur, nous convertissons la valeur de retour du bloc en NSInteger, parce que c'est ce qu'il attend.

Filtrage des tableaux

Sélection et rejet

Il existe un certain nombre de méthodes pour filtrer les tableaux, notamment sélectionner et rejeter. Voyons comment filtrer le tableau de nombres et de mots créé précédemment.

NSArray * filterNumbers = numbers.select (^ (NSNumber * n) return n.intValue> 10;); NSLog (@ "NOMBRES FILTRÉS \ n% @", nombre filtrés); NSArray * filterWords = words.reject (^ (NSString * n) return n.length <= 2; ); NSLog(@"FILTERED WORDS\n%@", filteredWords);

Vous devez admettre que c'est très agréable à regarder. C'est concis et très lisible. Les tableaux dans les exemples ci-dessus sont simples, mais notez que vous pouvez utiliser des tableaux beaucoup plus complexes que cela. L'exemple suivant illustre cette.

NSArray * personnes = @ [personne1, personne2, personne3, personne4, personne5, personne6]; NSArray * males = people.select (^ (Person * p) return p.sex == 0;); NSArray * females = people.reject (^ (Person * p) return p.sex == 0;);

Subarrays

YOLOKit définit également premier et dernier, mais ils ne font pas ce que vous attendez d'eux. En d'autres termes, ils ne sont pas équivalents à NSArrayde firstObject et lastObject méthodes. Avec premier et dernier vous pouvez créer un sous-tableau à partir du tableau d'origine. Regardez l'exemple suivant.

NSArray * subsetNumbers = numbers.first (3); NSArray * subsetWords = words.last (2); NSLog (@ "SUBSET NUMBERS \ n% @", subsetNumbers); NSLog (@ "SUBSET WORDS \ n% @", subsetWords);

L'extrait de code ci-dessus génère le résultat suivant.

NUMÉROS DE SUBSET (1, 2, 45) MOTS DE SUBSET (pour tout le monde)

Manipuler des tableaux

Tri

Le tri d'un tableau est trivial avec YOLOKit. Voyons ce qu'il faut pour trier le tableau de nombres créé précédemment. C'est si facile.

NSArray * rangéNuméros = nombres.sort; NSLog (@ "% @", TrierNuméros);

Uniquing

L'un des avantages de l'utilisation NSSet c'est qu'il ne contient pas d'objets en double. Cependant, la création d’un tableau d’objets est triviale avec YOLOKit. Ajoutons quelques chiffres supplémentaires avec YOLOKit concat méthode et puis unique le tableau avec uniq.

// concaténer des nombres = nombres.concat (@ [@ 1, @ 2, @ 3, @ 4]); NSLog (@ "CONCAT% @", nombres); // Unique & Sort numbers = numbers.uniq.sort; NSLog (@ "UNIQ% @", nombres);

Avez-vous remarqué que j'ai également trié le tableau en chaînant uniq et Trier? L’objectif n’est pas de transformer le code Objective-C en Ruby ou en JavaScript, mais je suis certain que vous conviendrez que cet extrait de code est concis et très facile à lire et à comprendre..

Inverser et mélanger

// Inverser NSArray * inversedNumbers = numbers.reverse; // Mélange NSArray * shuffledWords = words.shuffle; NSLog (@ "REVERSED \ n% @", reverseNumbers); NSLog (@ "SHUFFLED \ n% @", shuffledWords);

L'extrait de code ci-dessus génère le résultat suivant.

REVERSED (384, "3.14", "-12", 45, 2, 1) SHUFFLED (pour, c'est, tout le monde, exemple, un, ceci)

Autres méthodes

Il existe de nombreuses autres méthodes pour travailler avec des tableaux, telles que tourner, échantillon, sans pour autant, ensemble, transposer, etc. Je vous encourage à parcourir YOLOKit sur GitHub pour en savoir plus à leur sujet..

Il existe également des méthodes qui peuvent être utilisées avec NSDictionary, NSNumber, et NSString. L'extrait de code suivant vous montre comment convertir une chaîne en un tableau de mots..

id wordsInString = @ "Vous ne vivez qu'une fois. Pas vrai?". split (@ ""); NSLog (@ "STRING% @", wordsInString);
STRING (Vous, seulement, vivez, "une fois.", "Pas vrai?")

3. Considérations

Achèvement du code

En raison de la syntaxe étrange de YOLOKit, Xcode ne sera pas d'une grande aide en ce qui concerne l'achèvement du code. Il vous montrera une liste de suggestions pour les méthodes de YOLOKit, mais c'est à peu près tout. Si vous voulez utiliser YOLOKit, vous devrez apprendre la syntaxe.

Performance

YOLOKit n’est pas optimisé pour la performance, comme le montre ce problème de GitHub. Cependant, cela rend votre code plus joli et plus lisible. Utilisant un pour boucle à boucle sur un tableau sera plus rapide et plus performante que les méthodes de YOLOKit et il est important de garder cela à l'esprit.

Conclusion

Est-ce que je recommande YOLOKit? Oui et non. Les considérations ci-dessus ne devraient pas vous empêcher d'utiliser YOLOKit, mais assurez-vous de ne pas utiliser YOLOKit si les performances sont importantes, car il existe de meilleures options disponibles, comme le bon vieux. pour boucle.

En résumé, vous ne devez utiliser YOLOKit que si vous estimez que cela ajoute de la valeur à votre projet. Considérez également que vos collègues doivent apprendre et apprécier la syntaxe de YOLOKit. Je pense que YOLOKit est un excellent projet qui montre clairement à quel point Objective-C peut être incroyablement expressif. Pour moi, c’est la leçon la plus importante que je retienne de YOLOKit.