Использование NSFetchedResultsController для поиска внешних данных - PullRequest
0 голосов
/ 07 марта 2012

У меня есть таблица, использующая NSFetchedResultsController для автоматического заполнения и обновления табличного представления. Данные, используемые для заполнения этой таблицы, поступают с внешнего сервера (вызов XML) и представляют только подмножество того, что на самом деле находится на сервере.

Проблема: я хочу, чтобы над этой таблицей была панель поиска, но вместо поиска данных приложения (только небольшое подмножество) я хочу выполнить поиск на сервере, а затем использовать эту таблицу для получения результатов.

NSFetchedResults предназначен для поиска только CoreData в приложении, а не на удаленном сервере. Как мне интегрировать поиск по внешнему серверу и отображать эти результаты? Я не хочу идти в другой ViewController только для поиска.

1 Ответ

2 голосов
/ 07 марта 2012

Я не думаю, что для этого можно использовать NSFetchedResultsController, потому что у вас нет связанного с ним NSFetchRequest.

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

// call to server
NSArray *remoteDatasource = <<populate from call>>;
AppSearchMode searchMode = AppSearchModeRemote; // this is an enum you could declare in .h

Затем вы можете перезагрузить таблицу, и всем вашим делегатам снова будет вызван.

// table view related
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    switch(searchMode) {
       case AppSearchModeCoreData:
         return [[self fetchedResultsController] sections] count];
       case AppSearchModeRemote:
         return [remoteDatasource count];
    }
}

Надеюсь, я ясно дал понять, что-то подобное сделал некоторое время назад.

...