我有一个基于SQL的核心数据托管文档,我使用由NSFetchedResultsController支持的tableview显示其内容。确实显示了数据,它就在那里,但即使我真的试图让它排序,它也没有排序。以下是我设置获取结果控制器的方法:
- (void)setupFetchedResultsController // attaches an NSFetchRequest to this UITableViewController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Notebook"];
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:descriptor];
// no predicate because we want ALL the notebooks
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.dbContext
sectionNameKeyPath:nil
cacheName:nil];
}
name是string类型的属性。我还尝试使用NSDate类型的另一个属性。它们都不起作用 - 即使在应用程序启动之前立即显示tableview,然后对文档应用任何更改,数据也不会排序。
想法?
答案 0 :(得分:1)
按以下方式初始化你的*描述符(注意“selector:”东西)
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
希望有所帮助!
答案 1 :(得分:0)
尝试将performFetch移动到您引用的方法的末尾。我正在使用的成功方法具有设置和调用以在一个方法中执行提取,而不是分开。
答案 2 :(得分:0)
好的,我猜这个进入堆栈溢出的X文件部分。问题解决了,我根本不知道我做了什么来解决它。在过去的几天里,我正在处理我的应用程序的其他部分,并且在某些时候,获取的结果控制器的结果开始再次排序。也许是Xcode中的一些错误在我重新启动时解决了,或者我在应用程序的另一部分中更改了一些,我只是不知道。谢谢你帮助我的尝试......