我使用排序描述符对提取请求的结果进行排序。如何使用nspredicate对非英文字符串进行排序?
NSFetchRequest* req = [[NSFetchRequest alloc] initWithEntityName:[MyEntity entityName]];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"property"
ascending:YES
selector:@selector(localizedCompare:)];
req.sortDescriptors = [NSArray arrayWithObject:descriptor];
return [self.managedObjectContext executeFetchRequest:req error:nil];
问题是单词以非英语字符开头,如'İ'列在列表末尾。这是一个土耳其字母,字母看起来像这样:
A,B,C,Ç,D,E,F,G,H,H,I,J,K,L,M, N,O,Ö,P,R,S,Ş,T,U,Ü,V,Y,Z.
所以这封信是在第12位。
我不知道为什么,但在获取对象后使用比较器工作。所以它适用于任何数组,但不适用于获取请求的排序描述符。
它,它是基于用户的语言
尝试在
NSString
创建一个类别,内容如下创造一个干净NSLocale
为此需要没有工作。我也尝试改变模拟器的语言。 – Mert 2012-08-05 07:28:34这很奇怪。如果我用'[myArray sortedArrayUsingSelector:@selector(localizedCompare :)]对数组排序',那么我会得到正确的结果。你能告诉代码你如何设置获取请求吗? – 2012-08-05 08:19:01
我编辑了我的问题并添加了代码 – Mert 2012-08-05 09:19:52