您好我正在尝试使用核心数据和NSFetchedResults控制器实现表视图的搜索栏功能。IOS/xcode:带有NSFETched结果控制器的TableView的搜索栏
相当数量的答案上SO建议使用类似下面的代码使用谓词用于搜索:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if ([searchText length] == 0) {
_fetchedResultsController = nil;
}
else {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", searchText];
[[_fetchedResultsController fetchRequest] setPredicate:predicate];
[[_fetchedResultsController fetchRequest] setFetchLimit:50];
}
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
[[self tableView] reloadData];
}
我也尝试过这种变化。然而,在任何情况下,我都有同样的问题。
首先,当您搜索时,它说没有结果。此外,如果您输入几个字母并点击x,则会出现灰色屏幕,如果再次点击,则会显示正常的表格视图。
但是,如果您单击取消,则在输入信件并看到“无结果”后,您将得到您应该得到的结果。一旦发生这种情况,您无法在不重建项目的情况下返回完整的表格视图。
我到目前为止唯一的想法是它可能与_fetchedResultsController vs fetchedResultsController(该源文件中的属性为ftchedResultsController,不带下划线)有关,但更改这些只会引发错误消息。
非常感谢您对可能造成这种情况的任何建议。
您是否承诺将FRC用于搜索结果,或者您会考虑使用替代方法吗? – andrewbuilder
我会考虑一种替代方法,如果它工作,并且很简单。 – user1904273
你是在使用故事板和一个搜索控制器对象放入你的'UITableViewController'中吗? – andrewbuilder