NSFetchedResultController и реализация UISearchBar - PullRequest
1 голос
/ 04 февраля 2010

Я создаю простое приложение на основе навигации с использованием основных данных для своего iPhone и пытаюсь выполнить небольшой поиск. Приложение основано на шаблоне «Навигационное приложение» от Apple. NSFetchedResultsController получает все объекты, и они будут отображаться в табличном представлении. Я также оставил кнопку «Плюс», чтобы добавить новые объекты. Ну, я реализовал UISearchBar и UISearchDisplayController, оба в одном. Поиск использует тот же NSFetchedResultsController для фильтрации объектов. NSPredicate будет установлен в методах делегата UISearchDisplayController, но кажется, что предикат не был установлен, потому что fetchedResultsController ничего не фильтрует. Это моя первая проблема. Теперь, если я нажму кнопку отмены в строке поиска и захочу вставить новый объект нажатием кнопки «плюс», это не произойдет. Никакие объекты не будут вставлены, приложение не падает, просто ничего не происходит.

Нужно ли использовать два разных NSFetchedResultsController в одном представлении? Если да, это не решает проблему, почему NSPredicate не установлен. Я уже благодарю вас за вашу помощь.

1 Ответ

4 голосов
/ 04 февраля 2010

Если вы измените свой запрос на выборку (например, изменив предикат), вам необходимо создать новый контроллер полученных результатов.
Кроме того, вы можете получить доступ к выбранным объектам в виде массива (используя свойство fetchedObjects контроллера выбранных результатов) и отфильтровать этот массив на основе критериев поиска. Это дает дополнительное преимущество, заключающееся в дополнительном выравнивании с образцом кода Apple для поиска в таблице (поскольку они используют массив для поддержки представления таблицы).

...