Distracție cu YOLOKit

Enumerarea colecțiilor în Obiectiv-C este adesea verbală și ciudată. Dacă sunteți obișnuiți cu Ruby sau ați lucrat cu Underscore sau Lo-Dash în JavaScript, atunci știți că există mai multe soluții elegante. Așa credeau creatorii YOLOKit atunci când au creat această bibliotecă minunată. Semnul lui YOLOKit este Enumerați Fundația încântător și ei o spun.

1. Instalare

Adăugarea YOLOKit la un proiect Xcode este foarte ușor cu CocoaPods. Includeți pod-ul în Podfile-ul proiectului, executați actualizare pod din linia de comandă și importă YOLO.h oriunde doriți să utilizați YOLOKit.

Dacă nu utilizați CocoaPods, descărcați biblioteca de la GitHub, adăugați fișierele relevante în proiect și importați antetul lui YOLOKit.

2. Folosind YOLOKit

YOLOKit are multe de oferit, dar în acest sfat rapid mă voi concentra doar pe câteva dintre metodele pe care YOLOKit le are în repertoriul său.

Minim și maxim

Să începem simplu cu extragerea valorii minime și maxime a unui matrice. Uitați-vă la următorul fragment de cod pentru a vedea cum funcționează.

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

Fragmentul de cod de mai sus are ca rezultat următoarea ieșire.

MIN -12 MAX 384

Sintaxa poate părea ciudată și s-ar putea să te întrebi de ce min și max luați un bloc, dar acest lucru adaugă mai multă putere la aceste metode. Puteți face tot ce vă place în bloc pentru a determina valoarea minimă și maximă a matricei. Următorul exemplu ar trebui să clarifice acest lucru.

NSArray * cuvinte = @ [@ "this", @ "este", @ "a", @ "exemplu", @ "pentru", @ "toată lumea"]; // Minim minim id = cuvinte.min (^ (NSString * n) return (NSInteger) n.length;); id mai lung = words.max (^ (NSString * n) return (NSInteger) n.length;); NSLog (@ "\ nSHORTEST% @ \ nLONGEST% @", cel mai scurt, cel mai lung);

Acest fragment de cod are ca rezultat următoarea ieșire.

SHORTEST o MAI MULT

YOLOKit este flexibil și nu se plânge de tipul argumentelor blocului. Cu toate acestea, pentru a satisface compilatorul, vom arunca valoarea de retur a blocului la NSInteger, pentru că așa se așteaptă.

Tablouri de filtrare

Selectarea și respingerea

Există o serie de metode pentru a filtra matrice, inclusiv Selectați și respinge. Să vedem cum putem filtra gama de numere și cuvinte pe care le-am creat mai devreme.

NSArray * filteredNumbers = numere.select (^ (NSNumber * n) return n.intValue> 10;); NSLog (@ "NUMĂRILE FILTRATE \ n% @", filteredNumbers); NSArray * filteredWords = words.reject (^ (NSString * n) return n.length <= 2; ); NSLog(@"FILTERED WORDS\n%@", filteredWords);

Trebuie să recunosc că este foarte frumos să te uiți. Este concis și foarte lizibil. Matricele din exemplele de mai sus sunt simple, dar rețineți că puteți utiliza rețele care sunt mult mai complexe decât acestea. Următorul exemplu ilustrează acest lucru.

NSArray * persoane = @ [persoană1, persoană2, persoană3, persoană4, persoană5, persoană6]; NSArray * masculi = people.select (^ (Person * p) return p.sex == 0;); NSArray * femele = people.reject (^ (Persoana * p) return p.sex == 0;);

Subarrays

YOLOKit definește de asemenea primul și ultimul, dar ei nu fac ceea ce vă așteptați ca ei să facă. Cu alte cuvinte, ele nu sunt echivalente cu NSArray„s firstObject și lastObject metode. Cu primul și ultimul puteți crea o subarray din matricea originală. Uitați-vă la următorul exemplu.

NSArray * subsetNumbers = numerele primului (3); NSArray * subsetWords = cuvinte.last (2); NSLog (@ "SUBSET NUMBERS \ n% @", subsetNumbers); NSLog (@ "SUBSET WORDS \ n% @", subsetWords);

Fragmentul de cod de mai sus are ca rezultat următoarea ieșire.

NUME DE SUBSEJARE (1, 2, 45) SUBSETE CU CUVINTE (pentru, toată lumea)

Manipularea machetelor

Triere

Sortarea unui matrice este trivială cu YOLOKit. Să vedem ce este nevoie pentru a sorta mulțimea numerelor create mai devreme. Este atât de ușor.

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

Uniquing

Unul dintre beneficiile utilizării NSSet este că nu conține obiecte duplicat. Cu toate acestea, o serie de obiecte unice este trivială cu YOLOKit. Să adăugăm câteva numere suplimentare cu YOLOKit's concat și apoi unic cu matricea Uniq.

// concatenate numere = numbers.concat (@ [@ 1, @ 2, @ 3, @ 4]); NSLog (@ "CONCAT% @", numere); // Numere unice & Sortare = numere.uniq.sort; NSLog (@ "UNIQ% @", numere);

Ați observat că am sortat și matricea prin legare Uniq și fel? Scopul nu este de a transforma codul Objective-C în Ruby sau JavaScript, dar sunt sigur că sunteți de acord că acest fragment de cod este concis și foarte ușor de citit și de înțeles.

Inversarea și amestecarea

// inversarea NSArray * reversedNumbers = numbers.reverse; // Shuffling NSArray * shuffledWords = cuvinte.shuffle; NSLog (@ "REVERSED \ n% @", reversedNumbers); NSLog (@ "SHUFFLED \ n% @", shuffledWords);

Fragmentul de cod de mai sus are ca rezultat următoarea ieșire.

REVERSED (384, "3.14", "-12", 45, 2, 1) SHUFFLED (pentru, este,

Alte metode

Există o mulțime de alte metode pentru a lucra cu matrice, cum ar fi roti, probă, fără, a stabilit, transpune, etc Vă încurajez să navigați pe YOLOKit pe GitHub pentru a afla mai multe despre ele.

Există, de asemenea, metode care pot fi utilizate cu NSDictionary, NSNumber, și NSString. Următorul fragment de cod vă arată cum să convertiți un șir într-o serie de cuvinte.

id wordsInString = @ "Tu trăiești doar o singură dată, nu?". NSLog (@ "STRING% @", wordsInString);
STRING (Tu, doar, vii, "o dată.", "Corect?")

3. Considerații

Finalizarea codului

Din cauza sintaxei ciudate a lui YOLOKit, Xcode nu va fi de mare ajutor când vine vorba de finalizarea codului. Acesta vă va arăta o listă de sugestii pentru metodele YOLOKit, dar asta este despre asta. Dacă doriți să utilizați YOLOKit, veți afla sintaxa.

Performanţă

YOLOKit nu este optimizat pentru performanță, așa cum arată această problemă GitHub. Cu toate acestea, face codul dvs. mai frumos și mai ușor de citit. Folosind un pentru buclă la buclă peste o matrice va fi mai rapidă și mai performantă decât metodele YOLOKit și este important să rețineți acest lucru.

Concluzie

Vă recomandăm YOLOKit? Da și nu. Considerațiile de mai sus nu ar trebui să vă împiedice să utilizați YOLOKit, dar asigurați-vă că nu utilizați YOLOKit dacă performanța este importantă, deoarece există mai multe opțiuni disponibile - cum ar fi ol ' pentru buclă.

Durata scurtă este că trebuie să utilizați YOLOKit numai dacă simțiți că adaugă valoare proiectului dumneavoastră. De asemenea, considerați că colegii dvs. trebuie să învețe și să aprecieze sintaxa lui YOLOKit. Cred ca YOLOKit este un proiect minunat care arata clar cat de incredibil de expresiv este Obiectiv-C. Pentru mine, aceasta este cea mai importantă lecție pe care o iau de la YOLOKit.

Cod