NSMutableArray - 通过字符串搜索获取数组的索引整数

9

我一直在使用NSMutableArray,并且通过objectAtIndex:int从数组中检索对象没有遇到任何问题。但是,有没有一种方法可以通过搜索包含特定字符串的数组来获取索引位置,而不是通过整数来提取数组中的对象呢?

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)

希望这有意义,且有答案存在。我在网上无法找到任何相关信息,也无法通过谷歌或苹果的类参考找到任何内容。
2个回答

34
您可以使用NSArrayindexOfObject:方法:
NSUInteger index = [animalOptions indexOfObject:@"Bear"];
如果存在重复的条目,则返回该对象的最低索引。欲了解更多信息,请查看文档

这个能够处理两个不同的NSString吗,一个在数组中,另一个是传递的参数?还是比较是“深入”的? - fbrereto
谢谢!回复非常迅速,这解决了我的问题。 - bbullis21
4
是的 - 平等性通过向对象发送 isEqual: 消息来测试。如果字符串值相等,即使它们是两个不同的实例,NSString 实例也将返回 YES。 - Alex Rozanski
4
如果你打算支持64位的Mac OS X,尤其是在这种情况下,你应该使用NSUInteger而不是int - Peter Hosey

0
你可以使用 [array indexOfObject:object] 方法来获取对象的索引,但是按照你想要的方式可能不起作用,因为你指定的字符串并不是数组中实际的字符串对象。然而,这样做肯定会起作用。
NSString * buttonTitle = [animalOptions objectAtIndex:1];// RETURNS BEARint 
objectIndex = [animalOptions indexOfObject:buttonTitle] //this will return 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接