使用NSFetchedResultsController搜索外部数据

时间:2012-03-07 03:29:03

标签: iphone objective-c core-data ios5 nsfetchedresultscontroller

我有一个使用NSFetchedResultsController的表来自动填充和更新表视图。用于填充该表的数据来自外部服务器(XML调用),仅代表服务器上实际内容的一部分。

问题:我希望在此表上方有一个搜索栏,但我没有搜索应用程序数据(只有一小部分),而是想在服务器上搜索,然后使用此表返回结果。

NSFetchedResults旨在仅搜索应用程序上的CoreData,而不是远程服务器。如何集成外部服务器搜索并显示这些结果?我不想只是为了搜索而去另一个ViewController。

1 个答案:

答案 0 :(得分: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];
    }
}

我希望我说清楚,我之前做过类似的事情。