9

I have been working with NSMutableArray and have had no problems retrieving an object from an array by using objectAtIndex:int. Rather then pulling an object out of the array by an integer is their a way to get the index position by searching the array with a string.

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)

Hopefully this makes sense, and there is an answer out there, I have been unable to research online and find anything through google or apple's class references.

2 Answers 2

34

You can use the indexOfObject: method from NSArray:

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

If there are duplicate entries then the lowest index of that object is returned. For more information, take a look at the docs.

Sign up to request clarification or add additional context in comments.

4 Comments

Will this work with two different NSStrings -- the one in the array and the parameter being passed? Or is the comparison "deep"?
Thank You! Amazingly quick response, This solved my question.
Yes – equality is tested by sending an isEqual: message to the object. An NSString instance will return YES if the string values are equal, even if they are two different instances.
You should use NSUInteger, not int, particularly if you intend to support 64-bit Mac OS X.
0

you can use [array indexOfObject:object] which will return the index of that object, now with the way you are wanting to do it, it might not w ork since the string you are specifing is not the actual string object in the array doing this however will def work

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.