testingNSMutableArray是否包含一个string对象
我有一个包含几个NSString对象的NSMutableArray 。 我如何testing数组是否包含特定的string文字? 
 我试过[array containsObject:@"teststring"]但是不起作用。 
你在做什么应该可以正常工作。 例如
 NSArray *a = [NSArray arrayWithObjects:@"Foo", @"Bar", @"Baz", nil]; NSLog(@"At index %i", [a indexOfObject:@"Bar"]); 
正确logging“在索引1”为我。 两个可能的弱点:
-   indexOfObject发送isEqual消息来做比较 – 你还没有在一个类别中取代这个方法?
-  确保你正在testingNSNotFound找不到,而不是(说)0。
 [array indexOfObject:object] != NSNotFound 
与string文字进行比较只能在代码示例中使用。 在现实世界中,您经常需要与例如数组中的NSString *实例进行比较,在这种情况下,containsObject将失败,因为它与对象比较,而不是值。
你可以添加一个类别到你的实现,它扩展NS(可变)数组的方法来检查它是否包含string(或任何其他types,你需要比较);
 @implementation NSMutableArray (ContainsString) -(BOOL) containsString:(NSString*)string { for (NSString* str in self) { if ([str isEqualToString:string]) return YES; } return NO; } @end 
您也可以使用谓词:
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", theArray]; BOOL result = [predicate evaluateWithObject:theString]; 
为每个对象
 [(NSString *) [array objectAtIndex:i] isEqualToString:@"teststring"];