使用特殊字符按字母顺序排序核心数据

时间:2012-01-10 08:43:41

标签: iphone xcode cocoa-touch cocoa sorting

我在Core Data中有一个包含很多名称的实体。有些名字中有特殊字符,即Åfjord。以字母Å开头的名字需要位于我的桌面视图的底部,因为它是挪威字母表中的最后一个字母。

-(NSArray *)getFetchedObjects:(NSManagedObjectContext *)context entityName:(NSString *)entityName sortKey:(NSString *)key{
NSError *error = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:context];
[fetchRequest setEntity:entity];

if (key != nil) {
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:key ascending:YES];
    NSArray *sortDescs = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescs];
}

return [context executeFetchRequest:fetchRequest error:&error];

}

我这样称呼方法:

places = [jsonMethods fetchObjectsForEntityName:@"Places" withPredicate:nil context:self.context  sortKey:@"name"];

输出结果为:

 AAAA
 AAAA
 ÅÅÅÅ
 BBBB
 BBBB
 ... and so on

我尝试了NSSortDescriptor的选择器,如:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:key ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

但是这只是将Å的名字放在顶部

就像我说的那样,我需要在底部以Å开头的名字。

我怎样才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下,NSPredicate应该更合适。