Исключение NSUnknownKeyException при использовании панели поиска.этот класс не соответствует кодировке значения ключа для имени ключа

StackOverflow https://stackoverflow.com//questions/25020897

Вопрос

Я просмотрел посты, которые другие люди публиковали с подобной ошибкой, но не в UISearchBar, и ни одного, с которым я мог бы связать свою проблему:

Короче говоря, я играю с панелями поиска и пытаюсь создать основы.

У меня есть 2 массива

@interface ViewController ()
{
    NSMutableArray *dataList;
    NSArray *searchResults;
}

Я заполнил свой массив dataList, используя следующее:

dataList = [[NSMutableArray alloc] init];

[dataList addObject:@"This is row 1"];
[dataList addObject:@"That is row 2"];
....
[dataList addObject:@"More data in 20"];

Я настроил свой searchDisplayController:

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString*) searchString
{
    [self filterContentForSearchText:searchString
                           scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                  objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    return YES;
}

и у меня есть функция фильтрации:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {    
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];

    searchResults = [dataList filteredArrayUsingPredicate:resultPredicate];
}

Именно в последней функции фильтра я получаю сообщение об ошибке в начале последней строки searchResults =

2014-07-29 17:47:16.056 TestSearch[44628:60b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0x1000069c8> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.'
*** First throw call stack:
...
...
...

Есть какие-нибудь идеи?

Я пробовал использовать NSArray вместо NSMutableArray но я получаю ту же ошибку.

То tableView с данными все в порядке, так что никаких проблем нет.

Это было полезно?

Решение

name не является свойством NSString объект.использовать self для предиката:

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self contains[c] %@", searchText];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top