我使用以下内容轻松显示UITableView
中的所有记录:
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Memo" inManagedObjectContext:[appDelegate managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"memodate" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[appDelegate managedObjectContext] sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
return _fetchedResultsController;
对于搜索记录,我正在执行此操作:
- (void)searchBar:(UISearchBar *)aSearchBar textDidChange:(NSString *)searchText {
if (self.searchBar.text ==nil || [self.searchBar.text isEqualToString:@""])
{
self.fetchedResultsController=nil;
}
else
{
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"memodesc CONTAINS[cd] %@", self.searchBar.text];
[_fetchedResultsController.fetchRequest setPredicate:predicate];
}
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort(); // Fail
}
[self.tableView reloadData];}
我的问题是,如果searchText值为nil
或""
我再次设置self.fetchedResultsController=nil;
以检索所有初始结果。
但我不这么认为这是正确的方法。它应该可以用谓词吗?
更新:
它使用这个谓词进行工作
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"1=1"];
[_fetchedResultsController.fetchRequest setPredicate:predicate];
但是如果我使用它,我的应用程序会崩溃:
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"All"];
[_fetchedResultsController.fetchRequest setPredicate:predicate];
Unable to parse the format string "ALL"'
答案 0 :(得分:11)
我知道这是一个旧线程,但无论如何......你也可以使用:
[NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
答案 1 :(得分:11)
快速地说:
let predicate = NSPredicate(value: true)
答案 2 :(得分:8)
如果要获取所有实体,只需将谓词设置为nil
。