如何使用string值获取NSArray中的对象的索引?

我想获得在类别的NSMutableArray内的对象的索引。

category对象有一个属性“category_title”,我想通过传递category_title的值来获得索引。

我已经浏览了文档,找不到一个简单的方法来解决这个问题。

NSArray不能保证你只能存储给定对象的一个​​副本,所以你必须确保你自己处理(或使用NSOrderedSet )。

也就是说,这里有几个方法。 如果您的类别对象实现了isEqual:来匹配category_title,那么您可以使用-indexOfObject:

如果你不能这样做(因为类别对象使用不同的等式定义),使用-indexOfObjectPassingTest: 它需要一个块,你可以在其中做任何你想要定义你的“testing”的testing – 在这种情况下,testingcategory_titlestring相等。

请注意,这些都是为NSArray声明的,所以如果只查看NSMutableArray头文件,就不会看到它们。

编辑:代码示例。 这假设CASCategory类的CASCategory与一个NSString属性categoryTitle (我不能把自己把下划线在伊娃的名字:-):

  CASCategory *cat1 = [[CASCategory alloc] init]; [cat1 setCategoryTitle:@"foo"]; CASCategory *cat2 = [[CASCategory alloc] init]; [cat2 setCategoryTitle:@"bar"]; CASCategory *cat3 = [[CASCategory alloc] init]; [cat3 setCategoryTitle:@"baz"]; NSMutableArray *array = [NSMutableArray arrayWithObjects:cat1, cat2, cat3, nil]; [cat1 release]; [cat2 release]; [cat3 release]; NSUInteger barIndex = [array indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { if ([[(CASCategory *)obj categoryTitle] isEqualToString:@"bar"]) { *stop = YES; return YES; } return NO; }]; if (barIndex != NSNotFound) { NSLog(@"The title of category at index %lu is %@", barIndex, [[array objectAtIndex:barIndex] categoryTitle]); } else { NSLog(@"Not found"); } 

不知道我明白这个问题,但这样的事情可能会工作(假设可变数组包含类“类别”的对象):

 int indx; bool chk; for (Category *aCategory in theArray) { chk = ([[aCategory category_title] isEqualToString:@"valOfCategoryTitle"]) if ( chk ) indx = [theArray indexOfObject:aCategory]; } 

试试这个代码更简单:

 int f = [yourArray indexOfObject:@"yourString"];