NSFetchedResultsController不排序

时间:2012-04-30 21:43:58

标签: objective-c core-data nsfetchedresultscontroller

我有一个基于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,然后对文档应用任何更改,数据也不会排序。

想法?

3 个答案:

答案 0 :(得分:1)

按以下方式初始化你的*描述符(注意“selector:”东西)

    NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

希望有所帮助!

答案 1 :(得分:0)

尝试将performFetch移动到您引用的方法的末尾。我正在使用的成功方法具有设置和调用以在一个方法中执行提取,而不是分开。

答案 2 :(得分:0)

好的,我猜这个进入堆栈溢出的X文件部分。问题解决了,我根本不知道我做了什么来解决它。在过去的几天里,我正在处理我的应用程序的其他部分,并且在某些时候,获取的结果控制器的结果开始再次排序。也许是Xcode中的一些错误在我重新启动时解决了,或者我在应用程序的另一部分中更改了一些,我只是不知道。谢谢你帮助我的尝试......