0

我有一个基于 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 时,数据也不会排序。

想法?

4

3 回答 3

1

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

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

希望有帮助!

于 2012-04-30T21:49:52.793 回答
0

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

于 2012-05-02T14:05:36.370 回答
0

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

于 2012-05-05T16:56:21.063 回答