2009-09-01 4 views
9

J'ai travaillé avec NSMutableArray et n'ai eu aucun problème pour extraire un objet d'un tableau en utilisant objectAtIndex:int. Plutôt que de tirer un objet hors du tableau par un entier est leur moyen d'obtenir la position de l'index en cherchant dans le tableau avec une chaîne.NSMutableArray - Obtenir l'index des tableaux Entier en recherchant avec une chaîne

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) 

Espérons que cela fait sens, et il y a une réponse là-bas, je suis incapable de faire des recherches en ligne et trouver quoi que ce soit à travers les références Google ou classe de pomme.

Répondre

34

Vous pouvez utiliser la méthode indexOfObject: de NSArray:

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

S'il y a des entrées en double alors l'indice le plus bas de cet objet est retourné. Pour plus d'informations, jetez un oeil à la docs.

+0

Cela fonctionnera-t-il avec deux NSStrings différents - celui dans le tableau et le paramètre étant passé? Ou est la comparaison "profonde"? – fbrereto

+0

Merci! Réponse étonnamment rapide, Cela a résolu ma question. – bbullis21

+4

Oui - l'égalité est testée en envoyant un message 'isEqual:' à l'objet. Une instance 'NSString' renverra YES si les valeurs de chaîne sont égales, même s'il s'agit de deux instances différentes. –

0

Vous pouvez utiliser [array indexOfObject: object] qui retournera l'index de cet objet, maintenant avec la façon dont vous voulez le faire, il pourrait ne pas fonctionner puisque la chaîne que vous spécifiez n'est pas l'objet string réel dans le tableau faire cela fonctionnera cependant def

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