Поиск NSFetchedResultsController с использованием NSPredicate - PullRequest
3 голосов
/ 12 апреля 2011

Я застрял на этой проблеме некоторое время и изо всех сил пытался найти решение.

Я использую 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] %@"'

Возможно, это довольно простое решение, но я был бы очень благодарен за любую помощь, которую вы можете предложить. Спасибо

1 Ответ

2 голосов
/ 12 апреля 2011

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY <yourFieldNameHere> contains[cd] %@", searchBar.text];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...