Я добавляю панель поиска к компоненту табличного представления моего приложения для iOS, которое позволяет осуществлять поиск через NSArray, состоящий из словарей.Однако панель поиска работает не всегда - она успешно выводит результат, если для моих данных есть точное совпадение, но не частичное совпадение.Например, он напечатает «Выключить свет» в результате, если будет введена эта точная фраза, но не если будет введен только «Поворот».Однако в массиве отладки, состоящем только из строк, функция поиска работала точно так, как ожидалось.
Мой код предиката находится здесь:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
self.searchResults = [allSearchableItems filteredArrayUsingPredicate:resultPredicate];
}
Фактически работающий тестовый блок был написан так:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
NSArray *array = [NSArray arrayWithObjects:@"Miguel", @"Ben", @"Adam", @"Melissa", nil];
NSArray *moreStuff = [array filteredArrayUsingPredicate:resultPredicate];
NSLog(@"%@", moreStuff);
self.searchResults = [allSearchableItems filteredArrayUsingPredicate:resultPredicate];
}
В приведенном выше блоке кода NSArray «moreStuff» распечатывается и корректно обновляется, однако в первом блоке NSArray «searchResults» возвращает результат только при вводе точного соответствия.Я в полном недоумении, поэтому любая помощь / рекомендации будут очень признательны.