Ios5 通过多个排序描述符对核心数据进行排序,并带有不区分大小写的比较

Ios5 通过多个排序描述符对核心数据进行排序,并带有不区分大小写的比较,ios5,core-data,nsfetchedresultscontroller,nssortdescriptor,Ios5,Core Data,Nsfetchedresultscontroller,Nssortdescriptor,我有一个单词:NSManagedObject子类,我试图根据单词的第一个字母对它进行分组。在每一节中,我将尝试按length属性进行排序,同时在单词长度相同时保持字母数字排序。看来是这样的 一句话 苹果长度=5 斧头长度=3 am长度=2 B字 贝恩长度=4 船长=4 袋长=3 所以我先初始化一个新的nsfetch请求。然后我添加排序描述符,首先按值排序(即单词),然后按长度排序。最后,初始化我的fetchedResultsController并使用组值按第一个字母对它们进行分组。 这是

我有一个单词:NSManagedObject子类,我试图根据单词的第一个字母对它进行分组。在每一节中,我将尝试按length属性进行排序,同时在单词长度相同时保持字母数字排序。看来是这样的

一句话

  • 苹果长度=5
  • 斧头长度=3
  • am长度=2
B字

  • 贝恩长度=4
  • 船长=4
  • 袋长=3
所以我先初始化一个新的nsfetch请求。然后我添加排序描述符,首先按值排序(即单词),然后按长度排序。最后,初始化我的fetchedResultsController并使用组值按第一个字母对它们进行分组。 这是我的代码,但我没有得到想要的结果。任何帮助都将不胜感激

@interface Word : NSManagedObject

@property (nonatomic, retain) NSString * value;
@property (nonatomic, retain) NSString * group;
@property (nonatomic, retain) NSNumber * length;

@end

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Word"];
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"value" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)],
                               [NSSortDescriptor sortDescriptorWithKey:@"length" ascending:NO], nil];

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                        managedObjectContext:self.wordDatabase.managedObjectContext
                                                                          sectionNameKeyPath:@"group"
                                                                                   cacheName:nil];

第一个排序描述符应用于用作
sectionNameKeyPath
的键,第二个排序描述符用于键
length
,最后一个排序描述符用于
value

request.sortDescriptors = [NSArray arrayWithObjects:
    [NSSortDescriptor sortDescriptorWithKey:@"group" ascending:YES],
    [NSSortDescriptor sortDescriptorWithKey:@"length" ascending:NO],
    [NSSortDescriptor sortDescriptorWithKey:@"value" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)],
    nil];