0

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

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

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

ответ

2

Я не думаю, что для этого можно использовать 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]; 
    } 
} 

Надеюсь, я дал понять, что я сделал что-то подобное.

Смежные вопросы