Comprobar si existe un object único en NSArray

Tengo un NSMutableArray donde se pueden agregar objects. Los objects agregados son objects SUPDataValue que contienen un grupo de datos SUP .

En una otra vista, tomo esta matriz de objects y la NSMutableArray en un NSMutableArray contiene un NSMutableArray para cada sección de tableview. Cuando agrego otro object SUPDataValue a mi matriz de object inicial y vuelvo a mi vista de tabla, quiero volver a leer todo el object de la matriz de objects y ver si esos objects existen en mi matriz de capas.

Estoy usando "objectExists" y funciona muy bien … sin embargo … si agrego el mismo object dos veces a mi matriz de objects, siempre asumirá que existe en una capa.

Este es mi código:

 - (void)setInitialComponents:(NSMutableArray*)components { if (self.componentLayer) { for (SUPDataValueList *val in components) { BOOL found = NO; for (NSMutableArray *layer in self.componentLayer) { if ([layer containsObject:val]) { found = YES; } } if (!found) { [[self.componentLayer objectAtIndex:0] addObject:val]; } } } else { self.componentLayer = [NSMutableArray array]; // Add the no-layer layer (section 0) [self.componentLayer addObject:[NSMutableArray array]]; if (self.addMode) { [[self.componentLayer objectAtIndex:0] addObjectsFromArray:components]; } else { for (SUPDataValueList * val in components) { int layer = [[NSString stringWithFormat:@"%@", [val item:38]] intValue]; if (self.componentLayer.count < layer) { [self.componentLayer insertObject:[NSMutableArray array] atIndex:layer-1]; } [[self.componentLayer objectAtIndex:layer-1] addObject:val]; } } } [self.tableView reloadData]; } 

Como podría haber adivinado, mi problema está aquí:

 if ([layer containsObject:val]) { found = YES; } 

Me gustaría comprobar si existe un object único en esa matriz (utilizando ID de asignación de memory o algo así?) ¿Cómo hago eso?

El método containsObject invocará isEqual: en los objects subyacentes que se comparan.

A less que implemente isEqual: en el object SUPDataValueList, simplemente hará una comparación de puntero, que es el comportamiento pnetworkingeterminado de isEqual en NSObject.

Está buscando -[NSArray indexOfObjectIdenticalTo:] , que usa las direcciones de los objects para determinar una coincidencia.

 found = [layer indexOfObjectIdenticalTo:val] != NSNotFound;