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
消息来做比较 – 你还没有在一个类别中取代这个方法? - 确保你正在testing
NSNotFound
找不到,而不是(说)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"];