我有一个NSMutableArray包含一些NSString对象.如何测试数组是否包含特定的字符串文字?
我尝试[array containsObject:@"teststring"]但是这不起作用.
Ada*_*ght 87
你正在做什么应该工作正常.例如
NSArray *a = [NSArray arrayWithObjects:@"Foo", @"Bar", @"Baz", nil];
NSLog(@"At index %i", [a indexOfObject:@"Bar"]);
Run Code Online (Sandbox Code Playgroud)
为我正确记录"在索引1".两种可能的缺点:
indexOfObject发送isEqual消息进行比较 - 您没有在类别中替换此方法?NSNotFound未找到,而不是(比如说)0.与字符串文字进行比较仅适用于代码示例.在现实世界中,您经常需要与例如数组中的NSString*实例进行比较,在这种情况下,containsObject失败,因为它与对象而不是值进行比较.
你可以在你的实现中添加一个类别,它扩展了NS(Mutable)数组,并使用一种方法检查它是否包含字符串(或者你需要比较的其他类型);
@implementation NSMutableArray (ContainsString)
-(BOOL) containsString:(NSString*)string
{
for (NSString* str in self) {
if ([str isEqualToString:string])
return YES;
}
return NO;
}
@end
Run Code Online (Sandbox Code Playgroud)
小智 6
您也可以使用谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", theArray];
BOOL result = [predicate evaluateWithObject:theString];
Run Code Online (Sandbox Code Playgroud)
对于每个对象
[(NSString *) [array objectAtIndex:i] isEqualToString:@"teststring"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51356 次 |
| 最近记录: |