Как получить значение индекса данных поиска в виде таблицы на iPhone

Я использую контроллер tableview с панелью поиска. Я хочу получить все позиции индекса элементов массива, которые связаны с результатом поиска любой строки из таблицы.

Например: если у меня есть массив, содержащий следующее: @"sau",@"jain",@"abc",@"sau",@"zyx" и я ищу "sau", тогда я хочу, чтобы он выводил индекс 0 и 3.

Как я могу этого добиться?


person SKMAISM    schedule 20.08.2012    source источник
comment
Было бы лучше сравнить строку поиска с элементами table_array. Индекс, который вы получаете, является значением.   -  person Tripti Kumar    schedule 20.08.2012


Ответы (1)


Попробуйте следующий код:

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
}];
person Sash Zats    schedule 20.08.2012
comment
Спасибо за ответ. Я новичок в айфоне. Я получаю результат, но я хочу, чтобы по одной позиции индекса не было в наборе, потому что мне нужно передать это значение индекса в другой массив. - person SKMAISM; 20.08.2012
comment
Спасибо за ценную поддержку. Но я хочу немного другого. У меня есть табличное представление, в котором присутствуют 3 метки, и в этих данных поступают из 3 разных массивов. И теперь, когда я ищу в строке поиска по первой метке, которая является именем пользователя, я хочу, чтобы в таблице отображались все данные, связанные с критериями поиска. Означает, как я уже приводил пример, что если @sau находится во 2 позиции, то соответствующие связанные данные из массива отображаются в таблице. Спасибо за поддержку . Пожалуйста помоги. - person SKMAISM; 20.08.2012
comment
Привет... Я начинаю делать приложение для чата для iPhone, в котором пользователи могут вести приватный чат. Так что можете ли вы дать какую-нибудь идею, или какое-либо работающее приложение, или какой-либо код для этого. Спасибо. - person SKMAISM; 30.08.2012