2011-05-26 27 views
11

¿Cómo puedo comparar dos NSMutableArray? si ambos son iguales a lo que debería devolver, de lo contrario serían falsos.cómo comparar dos NSMutableArray?

Gracias ...

+0

posible duplicado de [Cómo comparar dos NSMutableArrays?] (Http://stackoverflow.com/ preguntas/14332971/how-to-compare-two-nsmutablearrays) – nyuszika7h

+1

@ nyuszika7h: ¡por favor revise la fecha de la pregunta! :) – Maulik

+0

Bueno, traté de mejorar una edición sugerida para esto y me dijo que ya existe una pregunta con ese título, así que ahí está. Aunque no me di cuenta de que este es más viejo. – nyuszika7h

Respuesta

28
return ([array1 isEqualToArray:array2]); 

vuelve YES si arreglos son iguales otra cosa vuelve NO

+2

-1 de mí. tienes un par de problemas 1) el método ya devuelve un BOOL SÍ o NO, por lo que es necesario probar el BOOL y devolver lo mismo. 2) BOOL en Objective-C es 'YES' y' NO' no 'true' o' false'. Compilará, pero no es una convención de Cocoa. – Abizern

+0

@Abizern: +1! Gracias, editaré mi respuesta. Lo convertí en una prueba para que un usuario novato pueda entender mejor la idea. – visakh7

+1

Lo siento, el estilo pobre es estilo pobre. ¿Usa un método para llamar a un método y simplemente devuelve su resultado? – Abizern

9

¿Tiene isEqualToArray: método rápido y seguro!

Otra forma es iterar a través de ambas matrices y comparar cada objeto utilizando el método isEqual:. Es lo mismo que llamar al isEqualToArray:. Tenga en cuenta que en ambas variantes debe implementar el método isEqual: en su clase de objeto de matriz si no es una clase estándar.

Y justo antes de estas operaciones puede simplemente comparar su longitud, si no son iguales, por lo que no tiene sentido gastar recursos en cálculos más complicados.

+0

-1. La primera parte está bien, creo que tu explicación es incorrecta. Por lo general, es mejor utilizar los métodos específicos 'isEqualTo ' en lugar del método general 'isEqual'. Particularmente como en esto para las matrices, primero verifica las longitudes para usted y luego compara cada uno de los objetos. – Abizern

+0

He mencionado solo otra forma de comparación de objetos (podría ser útil). Lo he referido como _otro_ camino. En la tercera parte mencioné la comparación de la longitud de la matriz. Sin duda, merece menos, mi mal. – knuku

+0

Si el usuario no desea comparar el objeto completo, es mucho mejor implementar 'isEqual:'. ¿Qué pasa si comparamos las manzanas solo por tamaño y color? No necesitamos saber cuántas semillas hay dentro de la manzana. Espero que lo tengas – knuku

3
[array1 isEqualToArray:array2]; 
3

debe ser capaz de utilizar la clase NSArray base para comparar una matriz con otra matriz:

- (BOOL)isEqualToArray:(NSArray *)otherArray 
6

Uso isEqualToArray: método para comparar entre dos objetos de matriz

así:

Método 1:

return [array1 isEqualToArray:array2]; //return YES or NO 

Método 2:

if([array1 isEqualToArray:array2]) {//perform condition on YES} 
0
if([array1 isEqualToArray:array2]){ 

    }else{ 

    } 
+0

Sería bueno proporcionar un enlace a la documentación del método o agregar comentarios sobre cómo el método hace la comparación. – Tala