gpt4 book ai didi

objective-c - 如何使用 nspredicate 对非英文字符串进行排序?

转载 作者:可可西里 更新时间:2023-11-01 04:42:24 24 4
gpt4 key购买 nike

我正在使用排序描述符对获取请求的结果进行排序。

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, I, İ, J, K, L, M, N, O, Ö, P, R, S, Ş, T, U, Ü, V, Y, Z.

所以字母在第 12 位。

我不知道为什么,但在获取对象后使用比较器是可行的。所以它适用于任何数组,但不适用于获取请求的排序描述符。

最佳答案

NSFetchedResultsController v.s. UILocalizedIndexedCollation 查看我的问题的详细信息我展示了如何使用 UILocalizedIndexedCollat​​ion 正确生成字母表并使用基于 UILocalizedIndexCollat​​ion 的正确排序方法进行排序。我的问题只是围绕着寻求一种更好的方法来做到这一点。

如果您不使用 UILocalizedIndexCollat​​ion,您应该只使用 localizedStandardCompare:而不是 WWDC 视频中提到的用于本地化的 localizedCompare。

关于objective-c - 如何使用 nspredicate 对非英文字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com