我在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:)];
但是这只是将Å的名字放在顶部
就像我说的那样,我需要在底部以Å开头的名字。
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:0)
我认为在这种情况下,NSPredicate应该更合适。