La enumeración de colecciones en Objective-C es a menudo verbosa y torpe. Si estás acostumbrado a Ruby o has trabajado con Underscore o Lo-Dash en JavaScript, entonces sabes que hay soluciones más elegantes. Eso es exactamente lo que pensaron los creadores de YOLOKit cuando crearon esta ingeniosa biblioteca. El lema de YOLOKit es Enumerate Foundation deliciosamente y lo dicen en serio.
Agregar YOLOKit a un proyecto de Xcode es muy fácil con CocoaPods. Incluye el pod en el archivo de Pod de tu proyecto, ejecuta actualización de pod
desde la línea de comandos, e importar YOLO.h
Donde quieras usar YOLOKit.
Si no está utilizando CocoaPods, descargue la biblioteca de GitHub, agregue los archivos relevantes a su proyecto e importe el encabezado de YOLOKit.
YOLOKit tiene mucho que ofrecer, pero en este rápido consejo solo me centraré en algunos de los métodos que YOLOKit tiene en su repertorio..
Comencemos con la extracción del valor mínimo y máximo de una matriz. Eche un vistazo al siguiente fragmento de código para ver cómo funciona.
NSArray * números = @ [@ (1), @ (2), @ (45), @ (- 12), @ (3.14), @ (384)]; // ID mínima min = números.min (^ (NSNumber * n) return n.intValue;); id max = numbers.max (^ (NSNumber * n) return n.intValue;); NSLog (@ "\ nMIN% @ \ nMAX% @", min, max);
El fragmento de código anterior da como resultado el siguiente resultado.
MIN -12 MAX 384
La sintaxis puede parecer extraña y es posible que se pregunte por qué min
y max
toma un bloque, pero esto en realidad agrega más poder a estos métodos. Puede hacer lo que quiera en el bloque para determinar cuál es el valor mínimo y máximo de la matriz. El siguiente ejemplo debería aclarar esto..
NSArray * words = @ [@ "this", @ "is", @ "a", @ "example", @ "para", @ "everyone"]; // Id. Mínimo más corto = palabras.min (^ (NSString * n) return (NSInteger) n.length;); id longest = words.max (^ (NSString * n) return (NSInteger) n.length;); NSLog (@ "\ nSHORTEST% @ \ nLONGEST% @", el más corto, el más largo);
Este fragmento de código da como resultado el siguiente resultado.
EL MÁS LARGO DE TODOS
YOLOKit es flexible y no se queja sobre el tipo de argumentos de bloque. Sin embargo, para satisfacer al compilador, emitimos el valor de retorno del bloque a NSInteger
, porque eso es lo que espera.
Hay una serie de métodos para filtrar matrices, incluyendo seleccionar
y rechazar
. Veamos cómo podemos filtrar la matriz de números y palabras que creamos anteriormente..
NSArray * filterNumbers = numbers.select (^ (NSNumber * n) return n.intValue> 10;); NSLog (@ "NÚMEROS FILTRADOS \ n% @", Números filtrados); NSArray * filtersWords = words.reject (^ (NSString * n) return n.length <= 2; ); NSLog(@"FILTERED WORDS\n%@", filteredWords);
Tienes que admitir que esto es muy agradable de ver. Es conciso y muy legible. Las matrices en los ejemplos anteriores son simples, pero tenga en cuenta que puede usar matrices que son mucho más complejas que esto. El siguiente ejemplo lo ilustra.
NSArray * personas = @ [persona1, persona2, persona3, persona4, persona5, persona6]; NSArray * males = personas.seleccionar (^ (Persona * p) return p.sex == 0;); NSArray * females = people.reject (^ (Person * p) return p.sex == 0;);
YOLOKit también define primero
y último
, pero no hacen lo que esperas que hagan. En otras palabras, no son equivalentes a NSArray
es firstObject
y lastObject
metodos Con primero
y último
puede crear un subarreglo desde la matriz original. Echa un vistazo al siguiente ejemplo..
NSArray * subsetNumbers = numbers.first (3); NSArray * subsetWords = words.last (2); NSLog (@ "SUBSET NUMBERS \ n% @", subsetNumbers); NSLog (@ "SUBSET WORDS \ n% @", subsetWords);
El fragmento de código anterior da como resultado el siguiente resultado.
NÚMEROS DE SUBSET (1, 2, 45) PALABRAS DE SUBSET (para, todos)
Ordenar una matriz es trivial con YOLOKit. Veamos qué se necesita para ordenar la matriz de números que creamos anteriormente. Es fácil.
NSArray * sortedNumbers = numbers.sort; NSLog (@ "% @", sortedNumbers);
Uno de los beneficios de usar NSSet
Es que no contiene objetos duplicados. Sin embargo, uniquing una matriz de objetos es trivial con YOLOKit. Agreguemos algunos números adicionales con YOLOKit concat
Método y luego única la matriz con uniq
.
// Concatenar números = números.concat (@ [@ 1, @ 2, @ 3, @ 4]); NSLog (@ "CONCAT% @", números); // Números únicos y de clasificación = números.uniq.sort; NSLog (@ "UNIQ% @", números);
¿Te has dado cuenta de que también ordené la matriz por encadenamiento uniq
y ordenar
? El objetivo no es convertir el código de Objective-C en Ruby o JavaScript, pero estoy seguro de que está de acuerdo en que este fragmento de código es conciso y muy fácil de leer y entender..
// Invertir NSArray * reversedNumbers = numbers.reverse; // Shuffling NSArray * shuffledWords = words.shuffle; NSLog (@ "REVERSED \ n% @", reversedNumbers); NSLog (@ "SHUFFLED \ n% @", shuffledWords);
El fragmento de código anterior da como resultado el siguiente resultado.
INVERTIDO (384, "3.14", "-12", 45, 2, 1) SHUFFLED (porque, es, todos, ejemplo, a, esto)
Existen muchos otros métodos para trabajar con matrices, como girar
, muestra
, sin
, conjunto
, transponer
, etc. Te animo a navegar YOLOKit en GitHub para descubrir más sobre ellos..
También hay métodos que se pueden utilizar con NSDiccionario
, NSNumber
, y NSString
. El siguiente fragmento de código le muestra cómo convertir una cadena en una matriz de palabras.
id wordsInString = @ "Solo vives una vez. ¿Verdad?". split (@ ""); NSLog (@ "STRING% @", wordsInString);
STRING (Tú, solo, vives, "una vez", "¿Verdad?")
Debido a la extraña sintaxis de YOLOKit, Xcode no será de mucha ayuda cuando se trata de completar el código. Le mostrará una lista de sugerencias para los métodos de YOLOKit, pero eso es todo. Si quieres usar YOLOKit, tendrás que aprender la sintaxis.
YOLOKit no está optimizado para el rendimiento como lo muestra este problema de GitHub. Sin embargo, hace que su código sea más bonito y más legible. Usando un para
bucle a bucle sobre una matriz será más rápido y más eficaz que los métodos de YOLOKit y es importante que tenga esto en cuenta.
¿Recomiendo YOLOKit? Si y no. Las consideraciones anteriores no deberían impedirle usar YOLOKit, pero asegúrese de no usar YOLOKit si el rendimiento es importante, porque hay mejores opciones disponibles, como las buenas. para
lazo.
El largo del corto es que solo debes usar YOLOKit si sientes que agrega valor a tu proyecto. También considere que sus colegas necesitan aprender y apreciar la sintaxis de YOLOKit. Creo que YOLOKit es un gran proyecto que muestra claramente lo increíblemente expresivo que puede ser Objective-C. Para mí, esa es la lección más importante que le quito a YOLOKit.