Oppsummering av samlinger i Objective-C er ofte verbose og clunky. Hvis du er vant til Ruby eller jobbet med Underscore eller Lo-Dash i JavaScript, så vet du at det er mer elegante løsninger. Det er akkurat hva skaperne av YOLOKit tenkte da de opprettet dette nifty-biblioteket. YOLOKits tagline er Oppsummer Foundation grundig og de mener det.
Å legge YOLOKit til et Xcode-prosjekt er veldig enkelt med CocoaPods. Ta med poden i prosjektets Podfile, kjør pod oppdatering
fra kommandolinjen, og importer YOLO.h
uansett hvor du vil bruke YOLOKit.
Hvis du ikke bruker CocoaPods, laster du ned biblioteket fra GitHub, legger til relevante filer i prosjektet ditt, og importerer YOLOKit's header.
YOLOKit har mye å tilby, men i dette raske tipset vil jeg bare fokusere på noen av metodene YOLOKit har i sitt repertoar.
La oss starte enkle med å trekke ut minimums- og maksimumverdien av en matrise. Ta en titt på følgende kodestykke for å se hvordan det fungerer.
NSArray * tall = @ [@ (1), @ (2), @ (45), @ (- 12), @ (3,14), @ (384)]; // Minimum id min = numbers.min (^ (NSNumber * n) return n.intValue;); id max = numbers.max (^ (NSNumber * n) return n.intValue;); NSLog (@ "\ nMIN% @ \ nMAX% @", min, maks);
Ovennevnte kodestykke resulterer i følgende utgang.
MIN-12 MAX 384
Syntaxen kan virke merkelig og du lurer kanskje på hvorfor min
og max
ta en blokk, men dette legger faktisk mer kraft til disse metodene. Du kan gjøre hva du vil i blokken for å finne ut hva minimumsverdien og maksimumverdien for arrayet er. Følgende eksempel bør avklare dette.
NSArray * ord = @ [@ "dette", @ "er", @ "a", @ "eksempel", @ "for", @ "alle"]; // Minimum id korteste = words.min (^ (NSString * n) return (NSInteger) n.length;); id lengst = words.max (^ (NSString * n) return (NSInteger) n.length;); NSLog (@ "\ nSHORTEST% @ \ Longest% @", korteste og lengste);
Denne kodestykket resulterer i følgende utdata.
KORTEST en lengste alle
YOLOKit er fleksibel og klager ikke på typen av blokkargumentene. For å tilfredsstille kompilatoren, kaster vi tilbake verdien av blokken til NSInteger
, fordi det er det det forventer.
Det finnes en rekke metoder for å filtrere arrays, inkludert å velge
og avvise
. La oss se hvordan vi kan filtrere mengden tall og ord vi opprettet tidligere.
NSArray * filteredNumbers = numbers.select (^ (NSNumber * n) return n.intValue> 10;); NSLog (@ "FILTERED NUMBERS \ n% @", filteredNumbers); NSArray * filteredWords = words.reject (^ (NSString * n) return n.length <= 2; ); NSLog(@"FILTERED WORDS\n%@", filteredWords);
Du må innrømme at dette er veldig hyggelig å se på. Det er kortfattet og veldig leselig. Arraysene i eksemplene ovenfor er enkle, men merk at du kan bruke arrayer som er mye mer komplekse enn dette. Følgende eksempel illustrerer dette.
NSArray * folk = @ [person1, person2, person3, person4, person5, person6]; NSArray * hanner = people.select (^ (Person * p) return p.sex == 0;); NSArray * kvinner = people.reject (^ (Person * p) return p.sex == 0;);
YOLOKit definerer også først
og siste
, men de gjør ikke det du forventer at de skal gjøre. Med andre ord, de er ikke like NSArray
's firstObject
og lastObject
metoder. Med først
og siste
Du kan opprette en subarray fra den opprinnelige gruppen. Ta en titt på følgende eksempel.
NSArray * subsetNumbers = numbers.first (3); NSArray * subsetWords = words.last (2); NSLog (@ "SUBSET NUMBERS \ n% @", subsetNumbers); NSLog (@ "SUBSET WORDS \ n% @", subsetWords);
Ovennevnte kodestykke resulterer i følgende utgang.
SUBSET NUMBERS (1, 2, 45) SUBSET WORDS (for alle)
Sortering av en matrise er trivial med YOLOKit. La oss se hva som trengs for å sortere rekke tallene vi opprettet tidligere. Det er så enkelt.
NSArray * sortedNumbers = numbers.sort; NSLog (@ "% @", sortedNumbers);
En av fordelene med å bruke NSSet
er at den ikke inneholder dupliserte objekter. Men uniquing en rekke objekter er trivial med YOLOKit. La oss legge til noen få ekstra tall med YOLOKit concat
metode og deretter unike matrisen med uniq
.
// Concatenate numbers = numbers.concat (@ [@ 1, @ 2, @ 4, @ 4]); NSLog (@ "CONCAT% @", tall); // Unikke & Sorter tall = tall.uniq.sort; NSLog (@ "UNIQ% @", tall);
Har du lagt merke til at jeg også sorterte matrisen ved kjetting uniq
og sortere
? Målet er ikke å snu Objective-C-kode til Ruby eller JavaScript, men jeg er sikker på at du er enig i at denne kodestykket er kortfattet og veldig lett å lese og forstå.
// Omvendt NSArray * reversedNumbers = numbers.reverse; // Shuffling NSArray * shuffledWords = ord.shuffle; NSLog (@ "REVERSED \ n% @", reversedNumbers); NSLog (@ "SHUFFLED \ n% @", shuffledWords);
Ovennevnte kodestykke resulterer i følgende utgang.
REVERSERT (384, "3.14", "-12", 45, 2, 1) SHUFFLED (for, er, alle, eksempel, a, dette)
Det finnes mange andre metoder for å jobbe med arrays, for eksempel rotere
, prøve
, uten
, sett
, transponere
, etc. Jeg oppfordrer deg til å bla gjennom YOLOKit på GitHub for å finne ut mer om dem.
Det finnes også metoder som kan brukes sammen med NSDictionary
, NSNumber
, og NSString
. Følgende kodestykke viser deg hvordan du konverterer en streng til en rekke ord.
id wordsInString = @ "Du lever bare en gang. Høyre?". split (@ ""); NSLog (@ "STRING% @", ordInString);
STRING (Du, bare, leve, "en gang.", "Høyre?")
På grunn av YOLOKits merkelige syntaks, vil Xcode ikke være til stor hjelp når det gjelder kodegjennomføring. Det vil vise deg en liste over forslag til YOLOKits metoder, men det handler om det. Hvis du vil bruke YOLOKit, har du lært syntaxen.
YOLOKit er ikke optimalisert for ytelse som dette GitHub-problemet viser. Men det gjør koden din vakrere og mer lesbar. Bruker en til
sløyfe til sløyfe over en matrise vil bli raskere og mer ytelsesfull enn YOLOKits metoder, og det er viktig at du holder dette i bakhodet.
Anbefaler jeg YOLOKit? Ja og nei. Ovennevnte overveier bør ikke holde deg i å bruke YOLOKit, men sørg for at du ikke bruker YOLOKit hvis ytelsen er viktig, fordi det finnes bedre alternativer som den gode ol ' til
sløyfe.
Det lange av det korte er at du bare bør bruke YOLOKit hvis du føler at det gir verdi for prosjektet ditt. Vurder også at dine kolleger trenger å lære og sette pris på YOLOKits syntaks. Jeg tror YOLOKit er et flott prosjekt som tydelig viser hvor utrolig uttrykksfulle Objective-C kan være. For meg er det den viktigste leksjonen jeg tar bort fra YOLOKit.