我正在使用带有搜索栏的 tableview 控制器。我想获取与表中任何字符串的搜索结果相关的数组元素的所有索引位置。
例如:如果我有一个包含以下内容的数组:@"sau",@"jain",@"abc",@"sau",@"zyx" 我搜索 'sau' 然后我希望它输出索引0 和 3。
我怎样才能做到这一点?
我正在使用带有搜索栏的 tableview 控制器。我想获取与表中任何字符串的搜索结果相关的数组元素的所有索引位置。
例如:如果我有一个包含以下内容的数组:@"sau",@"jain",@"abc",@"sau",@"zyx" 我搜索 'sau' 然后我希望它输出索引0 和 3。
我怎样才能做到这一点?
试试下面的代码:
NSArray *array = @[ @"sau", @"jain", @"abc", @"sau", @"zyx" ];
NSString *searchString = @"sau";
NSIndexSet *result = [array indexesOfObjectsPassingTest:^BOOL(NSString *string, NSUInteger idx, BOOL *stop) {
NSRange searchStringRange = [string rangeOfString:searchString options:NSCaseInsensitiveSearch];
return searchStringRange.length > 0;
}];
NSLog(@"Result indexes: %@", result);
控制台输出是Result indexes: <NSIndexSet: 0x8a80c50>[number of indexes: 2 (in 2 ranges), indexes: (0 3)]
调整块内的代码以匹配您的搜索逻辑
编辑
或者逐个处理对象
NSArray *array = @[ @"sau", @"jain", @"abc", @"sau", @"zyx" ];
NSString *searchString = @"sau";
[array enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
BOOL searchCondition = [obj isEqualToString:searchString];
if (!searchCondition) return;
// You logic to process objects passing the search condition
}];