如何在iPhone的表视图中获取搜索数据的索引值

时间:2012-08-20 11:01:34

标签: iphone objective-c ios tableview searchbar

我正在使用带有搜索栏的tableview控制器。我想得到数组元素的所有索引位置,这些位置与表中任何字符串的搜索结果相关。

例如:如果我有一个包含以下内容的数组:@“sau”,@“jain”,@“abc”,@“sau”,@“zyx”,我搜索'sau'然后我想要它输出索引0和3。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

请尝试以下代码:

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
}];