2011-01-14 43 views
0

我在数值上对UITableView中显示的数据进行排序。使用NSSortDescriptor进行NSFetchedResultsController的数值排序

,我用这样一种描述符之前:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 

现在我想使用块这样的数字进行排序的:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) { 
    return [((NSString *)obj1) compare:(NSString *)obj2 options:NSCaseInsensitiveSearch | NSNumericSearch]; 
}]; 

,但对数据进行排序incorectly引起冲突在NSFetchedResultsController中使用节名称。所以我尝试用比较块来模仿旧的排序 - 只是为了确定问题不是由数字比较造成的。问题是,这些行:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) { 
    return [((NSString *)obj1) caseInsensitiveCompare:(NSString *)obj2]; 
}]; 

也导致同样的错误,我不明白为什么他们不会以同样的方式第一种方法那样对数据进行排序...

任何想法?

回答

1

我不知道这是否会在提取请求中工作,但您可以尝试按@selector(localizedStandardCompare:)进行排序。

+0

这也会导致与部分名称发生冲突,但我会在星期一做更多的测试。 我仍然不明白为什么最后的排序描述符不同于第一个... – edziubudzik 2011-01-15 11:56:36

相关问题