Divertirsi con YOLOKit

L'enumerazione delle raccolte in Objective-C è spesso prolissa e goffa. Se sei abituato a Ruby o hai lavorato con Underscore o Lo-Dash in JavaScript, sai che esistono soluzioni più eleganti. Questo è esattamente ciò che i creatori di YOLOKit hanno pensato quando hanno creato questa libreria elegante. Lo slogan di YOLOKit è Enumerare la Fondazione deliziosamente e lo dicono sul serio.

1. Installazione

Aggiungere YOLOKit a un progetto Xcode è molto semplice con CocoaPods. Includi il pod nel Podfile del tuo progetto, esegui aggiornamento pod dalla riga di comando e importare YOLO.h ovunque tu voglia usare YOLOKit.

Se non stai usando CocoaPods, scarica la libreria da GitHub, aggiungi i file rilevanti al tuo progetto e importa l'intestazione di YOLOKit.

2. Utilizzo di YOLOKit

YOLOKit ha molto da offrire, ma in questo rapido consiglio mi concentrerò solo su alcuni dei metodi che YOLOKit ha nel suo repertorio.

Minimo e Massimo

Iniziamo con l'estrazione del valore minimo e massimo di un array. Dai un'occhiata al seguente frammento di codice per vedere come funziona.

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

Il frammento di codice sopra riportato genera l'output seguente.

MIN -12 MAX 384

La sintassi può sembrare strana e potresti chiederti perché min e max prendere un blocco, ma questo in realtà aggiunge più potere a questi metodi. Puoi fare tutto quello che vuoi nel blocco per determinare qual è il valore minimo e massimo dell'array. Il seguente esempio dovrebbe chiarire questo.

NSArray * words = @ [@ "this", @ "is", @ "a", @ "example", @ "for", @ "everyone"]; // ID minimo più breve = words.min (^ (NSString * n) return (NSInteger) n.length;); id longest = words.max (^ (NSString * n) return (NSInteger) n.length;); NSLog (@ "\ nSHORTEST% @ \ nLONGEST% @", il più breve, il più lungo);

Questo snippet di codice restituisce il seguente output.

Più breve più a lungo tutti

YOLOKit è flessibile e non si lamenta del tipo degli argomenti del blocco. Tuttavia, per soddisfare il compilatore, assegniamo il valore di ritorno del blocco a NSInteger, perché è quello che si aspetta.

Array di filtraggio

Selezione e rifiuto

Esistono numerosi metodi per filtrare gli array, incluso selezionare e rifiutare. Vediamo come possiamo filtrare la matrice di numeri e parole che abbiamo creato in precedenza.

NSArray * filteredNumbers = numbers.select (^ (NSNumber * n) return n.intValue> 10;); NSLog (@ "NUMERI FILTRATI \ n% @", filteredNumbers); NSArray * filteredWords = words.reject (^ (NSString * n) return n.length <= 2; ); NSLog(@"FILTERED WORDS\n%@", filteredWords);

Devi ammettere che questo è molto bello da guardare. È conciso e molto leggibile. Gli array negli esempi precedenti sono semplici, ma si noti che è possibile utilizzare array molto più complessi di questo. Il seguente esempio illustra questo.

NSArray * persone = @ [persona1, persona2, persona3, persona4, persona5, persona6]; NSArray * males = people.select (^ (Person * p) return p.sex == 0;); NSArray * female = people.reject (^ (Person * p) return p.sex == 0;);

sottoarray

Definisce anche YOLOKit primo e scorso, ma non fanno quello che ti aspetti che facciano. In altre parole, non sono equivalenti a NSArray'S firstObject e LastObject metodi. Con primo e scorso è possibile creare un sottoarray dall'array originale. Dai un'occhiata al seguente esempio.

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

Il frammento di codice sopra riportato genera l'output seguente.

SUBSET NUMBERS (1, 2, 45) SUBSET WORDS (per, tutti)

Manipolazione di matrici

Ordinamento

Ordinare un array è banale con YOLOKit. Vediamo cosa serve per ordinare la matrice di numeri che abbiamo creato in precedenza. È così facile.

NSArray * sortedNumbers = numbers.sort; NSLog (@ "% @", ordinatiNumeri);

Uniquing

Uno dei vantaggi dell'uso NSSet è che non contiene oggetti duplicati. Tuttavia, unificare una serie di oggetti è banale con YOLOKit. Aggiungiamo alcuni numeri aggiuntivi con YOLOKit concat metodo e quindi univoco l'array con uniq.

// Concatenate numbers = numbers.concat (@ [@ 1, @ 2, @ 3, @ 4]); NSLog (@ "CONCAT% @", numeri); // Numeri unici e ordinativi = numeri.uniq.sort; NSLog (@ "UNIQ% @", numeri);

Hai notato che ho anche ordinato l'array concatenando uniq e ordinare? L'obiettivo non è trasformare il codice Objective-C in Ruby o JavaScript, ma sono sicuro che sei d'accordo sul fatto che questo snippet di codice sia conciso e molto facile da leggere e capire.

Inversione e mescolanza

// Inversione di NSArray * reverseedNumbers = numbers.reverse; // Shuffling NSArray * shuffledWords = words.shuffle; NSLog (@ "REVERSED \ n% @", reversedNumbers); NSLog (@ "SHUFFLED \ n% @", shuffledWords);

Il frammento di codice sopra riportato genera l'output seguente.

REVERSED (384, "3.14", "-12", 45, 2, 1) SHUFFLED (per, is, everyone, example, a, this)

Altri metodi

Esistono molti altri metodi per lavorare con gli array, come ad esempio ruotare, campione, senza, impostato, trasporre, ecc. Vi incoraggio a navigare su YOLOKit su GitHub per saperne di più su di loro.

Ci sono anche metodi che possono essere usati con NSDictionary, NSNumber, e NSString. Il seguente frammento di codice mostra come convertire una stringa in una serie di parole.

id wordsInString = @ "Si vive una volta sola. Giusto?". split (@ ""); NSLog (@ "STRING% @", wordsInString);
STRING (Tu, solo, vivi, "una volta". "Giusto?")

3. Considerazioni

Completamento del codice

A causa della sintassi dispari di YOLOKit, Xcode non sarà di grande aiuto quando si tratta di completare il codice. Ti mostrerà un elenco di suggerimenti per i metodi di YOLOKit, ma questo è tutto. Se vuoi usare YOLOKit, imparerai la sintassi.

Prestazione

YOLOKit non è ottimizzato per le prestazioni come mostra questo problema di GitHub. Tuttavia, rende il tuo codice più carino e più leggibile. Usare un per loop to loop su un array sarà più veloce e più performante rispetto ai metodi di YOLOKit ed è importante tenerlo a mente.

Conclusione

Raccomando YOLOKit? Sì e no. Le considerazioni di cui sopra non dovrebbero impedirti di usare YOLOKit, ma assicurati di non utilizzare YOLOKit se le prestazioni sono importanti, perché ci sono opzioni migliori disponibili, come il buon vecchio per ciclo continuo.

Il lungo del corto è che dovresti usare YOLOKit solo se ritieni che aggiunga valore al tuo progetto. Considera inoltre che i tuoi colleghi devono imparare e apprezzare la sintassi di YOLOKit. Penso che YOLOKit sia un grande progetto che mostra chiaramente quanto possa essere incredibilmente espressivo l'Objective-C. Per me, questa è la lezione più importante che tengo a YOLOKit.