Colocando todas las cadenas que están en las dos matrices en otra matriz

Digamos que tengo dos matrices:

NSArray * first = @[@"One", @"Two", @"Three"," @Four"]; NSArray * second = @[@"Four", @"Five", @"Six", @"One"]; 

Quiero poner los objects que están en ambos en otra matriz:

 NSArray * both = @[@"Four", @"One"]; 

¿Hay una forma más elegante de pasar por cada elemento del primero y comprobar si está contenido en el segundo?

Básicamente, necesitas encontrar la intersección de las matrices, por lo que necesitas usar el set aquí:

 NSMutableSet *intersection = [NSMutableSet setWithArray:firstArray]; [intersection intersectSet:[NSSet setWithArray:secondArray]]; NSArray *resultArray = [intersection allObjects]; 

Cree 2 instancias de NSMutableSet desde sus 2 arrays. Entonces hazlo:

 NSArray *result = [[set1 intersectSet:set2] allObjects]; 

Por supuesto. Simplemente use la herramienta adecuada para la tarea correcta. Alias, usa sets para las operaciones establecidas.

 NSSet *first = [NSSet setWithArray:array1]; NSMutableSet *second = [NSMutableSet setWithArray:array2]; [second intersectSet:first]; NSArray *commonObjects = [second allObjects];