我有一个使用NSFetchedResultsController的表来自动填充和更新表视图。用于填充该表的数据来自外部服务器(XML调用),仅代表服务器上实际内容的一部分。
问题:我希望在此表上方有一个搜索栏,但我没有搜索应用程序数据(只有一小部分),而是想在服务器上搜索,然后使用此表返回结果。
NSFetchedResults旨在仅搜索应用程序上的CoreData,而不是远程服务器。如何集成外部服务器搜索并显示这些结果?我不想只是为了搜索而去另一个ViewController。
答案 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];
}
}
我希望我说清楚,我之前做过类似的事情。