您好我正在嘗試使用核心數據和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