- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[displayItems removeAllObjects]; //clear array to ensure no repeat info
if ([searchText length] == 0) {
displayItems = (NSMutableArray *)allItems;
}
else {
//search by item category
NSPredicate *catPredicate = [NSPredicate predicateWithFormat:@"category
CONTAINS[cd] %@",searchText];
[searchable filterUsingPredicate:catPredicate];
//further search by item name
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd]
%@",searchText];
[searchable filterUsingPredicate:namePredicate];
displayItems = searchable;
searchable = (NSMutableArray *)allItems;
}
[self.searchResults reloadData];
}
Этот метод является частью простого табличного представления с возможностью поиска, которое я пытаюсь создать для более крупного проекта. Мой код компилируется и запускается, и когда я что-то набираю в строке поиска, кажется, что функция поиска работает, но затем программа падает, как только набирается вторая буква. Если я набираю две буквы подряд, выдается 'NSInvalidArgumentException', причина: '- [_ NSArrayI filterUsingPredicate:]: нераспознанный селектор, отправленный экземпляру 0x6d6c040' , но если я наберу одну букву и затем нажмите Enter или Backspace, он выдает этого парня 'NSInvalidArgumentException', причина: '- [ _NSArrayI removeAllObjects]: нераспознанный селектор, отправленный экземпляру 0x6a7f300' , когда я набираю вторую букву.
Я довольно новичок в объективе-c, и это меня озадачило. Любая помощь, которую я мог бы получить, будет принята с благодарностью ....: - / Все еще возникают проблемы с момента обновления.