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”为我。 两个可能的弱点:

  1. indexOfObject发送isEqual消息来做比较 – 你还没有在一个类别中取代这个方法?
  2. 确保你正在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"];