Я застрял на этой проблеме некоторое время и изо всех сил пытался найти решение.
Я использую Core Data и, будучи относительно новым для кодирования iOS, у меня возникли проблемы с поиском в моем fetchedResultsController для фильтрации строки, которую пользователь вводит в searchBar.
Я знаю, как получить строку из searchBar и как вызвать мой метод fetchResultsController. Но я борюсь с тем, как использовать NSPredicate для сопоставления только тех строк, которые хранятся в основных данных, с теми, которые введены в строке поиска.
В данный момент я делаю это в - (NSFetchedResultsController *) fetchedResultsController
(я переключаю сортировку по алфавиту, чтобы показать себе, что она работает).
if (!isSearching) {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"LabelValue" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
}
else {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"LabelValue" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSLog(@"%@", searchBar.text);
/*NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY contains[cd] %@", searchBar.text];
[fetchRequest setPredicate:predicate];*/
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
}
Я не совсем понимаю, как использовать предикат для фильтрации моих данных. Закомментированный код вызывает исключение NSExx, когда не комментируется:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "ANY contains[cd] %@"'
Возможно, это довольно простое решение, но я был бы очень благодарен за любую помощь, которую вы можете предложить. Спасибо