我需要从NSMutableArray
搜索字符串的索引。我已经实现了代码和这是完美的,但我需要提高搜索速度。
我使用了以下代码:
NSIndexSet *indexes = [mArrayTableData indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop){
NSString *s = (NSString*)obj;
NSRange range = [s rangeOfString: txtField.text options:NSCaseInsensitiveSearch];
if(range.location == 0)//
return range.location != NSNotFound;
return NO;
}];
NSLog(@"indexes.firstIndex =%d",indexes.firstIndex);
答案 0 :(得分:3)
有一种方法indexOfObject
NSString *yourString=@"Your string";
NSMutableArray *arrayOfStrings = [NSMutableArray arrayWithObjects: @"Another strings", @"Your string", @"My String", nil];
NSInteger index=[arrayOfStrings indexOfObject:yourString];
if(NSNotFound == index) {
NSLog(@"Not Found");
}
答案 1 :(得分:2)
如果您只想要一个索引(或者只有第一个索引,如果有多个索引),您可以使用您发布的方法的单数形式。您也不需要if子句:
NSInteger index = [mArrayTableData indexOfObjectPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop){
return [obj.lowercaseString isEqualToString:txtField.text.lowercaseString];
}];
如果要查找以搜索字符串开头的字符串,只需将isEqualToString:替换为hasPrefix:。使用大型搜索集时,它的速度大约是您发布的方法的两倍。