【问题标题】:NSFetchedResultsController doesn't sortNSFetchedResultsController 不排序
【发布时间】:2012-04-30 21:43:58
【问题描述】:

我有一个基于 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 是字符串类型的属性。我还尝试了另一个 NSDate 类型的属性。它们都不起作用 - 即使在对文档应用任何更改之前应用程序启动时立即显示 tableview 时,数据也不会排序。

想法?

【问题讨论】:

  • 什么时候打电话给-performFetch:?您是否尝试在调用后立即打印出结果,以确保问题不在控制器和表格视图之间?
  • performFetch 作为 setFetchedResultsController 方法的一部分执行,即作为 self.fetchedRestultsController=...至于打印 - 我会尝试报告。
  • 那你一定是子类化了?

标签: objective-c core-data nsfetchedresultscontroller


【解决方案1】:

初始化你的 *descriptor 如下(注意 "selector:" stuff)

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

希望有帮助!

【讨论】:

  • 顺便说一句,我之前尝试使用 @selector(compare:) 选择器,用于字符串名称,也用于另一个日期属性。没什么..
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2014-03-04
      相关资源
      最近更新 更多