последовательность символов поиска с помощью UISearchBar

У меня есть searchBar и searchController в моем проекте. Я хочу иметь возможность искать определенную последовательность букв и, возможно, пропускать один или два символа, если это возможно. Например, если я ищу «iPhone», или «i-phone», или «i phone», или «piphone», или «phone», я хочу иметь возможность найти поисковый запрос «iphone» в списке. Любая помощь будет оценена по достоинству.

Где searchTerm — это строка в верхнем регистре из UISearchBar.

NSCharacterSet *allowedChars = [[NSCharacterSet characterSetWithCharactersInString:@" ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890"] invertedSet];
NSString *resultString = [[searchTerm componentsSeparatedByCharactersInSet:allowedChars] componentsJoinedByString:@" "];

Принимая во внимание, что @" " в allowChars имеет важное значение, потому что фактический поиск может быть @"iPhone 32gb" и т. д.


person snksnk    schedule 18.02.2014    source источник
comment
Я не знаю, как продолжить. Единственное, что я пытался сделать, это преобразовать окончательную строку во все заглавные буквы и удалить все специальные символы. Я отредактирую пост с кодом   -  person snksnk    schedule 18.02.2014
comment
Вы пытались использовать NSPredicate? Ваши данные представляют собой строки в массиве или словари в массиве?   -  person Wain    schedule 18.02.2014
comment
Данные будут загружаться из облачной базы данных   -  person snksnk    schedule 18.02.2014
comment
данные будут получены с использованием одного вызова запроса   -  person snksnk    schedule 18.02.2014


Ответы (1)


    NSArray *firstNames = [[NSArray alloc] initWithObjects: @"i-phone", @"i phone", @"phone", @"Quentin",@"apple phone",@"phoapple" ];
    NSString * searchStr = @"phone";
    NSPredicate *thirtiesPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@",searchStr];
    NSLog(@"Bobs: %@", [firstNames filteredArrayUsingPredicate:thirtiesPredicate]);

Он будет регистрироваться как

2014-02-18 06:09:52.911 demo[5261] Bobs: ("i-phone", "i phone", phone, "apple phone")
person Muruganandham K    schedule 18.02.2014