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.
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.
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.
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ă.
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;);
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)
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);
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 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,
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?")
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.
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.
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.