Исключение NSUnknownKeyException при использовании панели поиска.этот класс не соответствует кодировке значения ключа для имени ключа
-
21-12-2019 - |
Вопрос
Я просмотрел посты, которые другие люди публиковали с подобной ошибкой, но не в 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];