2009-09-01 8 views
9

He estado trabajando con NSMutableArray y no he tenido problemas para recuperar un objeto de una matriz usando objectAtIndex:int. En lugar de extraer un objeto de la matriz por un número entero, es una forma de obtener la posición del índice buscando en la matriz una cadena.NSMutableArray - Obtener matrices índice entero buscando con una cadena

animalOptions = [[NSMutableArray alloc] init]; 
//Add items 
[animalOptions addObject:@"Fish"]; 
[animalOptions addObject:@"Bear"]; 
[animalOptions addObject:@"Bird"]; 
[animalOptions addObject:@"Cow"]; 
[animalOptions addObject:@"Sheep"]; 

NSString * buttonTitle = [animalOptions objectAtIndex:1]; 
// RETURNS BEAR 

int * objectIndex = [animalOptions object:@"Bear"]; 
// THIS IS WHAT I NEED HELP WITH, PULLING AN INDEX INTEGER WITH A STRING (ex: Bear) 

Esperamos que esto tenga sentido, y no hay una respuesta por ahí, he sido incapaz de investigación en línea y encontrar cualquier cosa a través de Google o referencias de clase de manzana.

Respuesta

34

Usted puede utilizar el método de indexOfObject:NSArray:

NSUInteger index = [animalOptions indexOfObject:@"Bear"]; 

Si hay entradas duplicadas se devuelve el índice más bajo de ese objeto. Para obtener más información, consulte el docs.

+0

¿Esto funcionará con dos NSStrings diferentes, la de la matriz y el parámetro que se pasa? ¿O es la comparación "profunda"? – fbrereto

+0

¡Gracias! Respuesta increíblemente rápida. Esto resolvió mi pregunta. – bbullis21

+4

Sí, la igualdad se prueba enviando un mensaje 'isEqual:' al objeto. Una instancia 'NSString' devolverá SÍ si los valores de cadena son iguales, incluso si son dos instancias diferentes. –

0

puede usar [array indexOfObject: object] que devolverá el índice de ese objeto, ahora con la forma en que lo desea, puede no funcionar porque la cadena que está especificando no es el objeto de cadena real en la matriz haciendo esto, sin embargo, funcionará def

NSString * buttonTitle = [animalOptions objectAtIndex:1];// RETURNS BEARint 
objectIndex = [animalOptions indexOfObject:buttonTitle] //this will return 1 
Cuestiones relacionadas