排序NSArray包含的åäö

7

需要帮助对包含瑞典字符(åäö)的NSArray进行排序。 目前我正在使用

[keyArray addObjectsFromArray:[[names allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; 

但这是一种排序方式 A Å Ä Ö


3
尝试使用localizedCompare:进行比较选择器。 - Eimantas
排序顺序有什么问题吗?对我这个非瑞典语言使用者来说看起来没问题啊。 - Richard
@Richard 维基百科上说顺序是A-Z,Å,Ä,Ö。 - Jilouc
2个回答

5
这个问题类似于我在这里回答的问题 Sort NSArray of NSStrings like Addressbook on iphone sort. 您需要进行一个不区分发音符号的搜索。
NSArray *array = [NSArray arrayWithObjects:@"aar", @"åäö", @"aao", nil];

NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [(NSString*)obj1 compare:obj2 options:NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch];
}];

注意:使用sortedArrayUsingComparator:需要iOS 4.0及以上版本。对于iOS < 4.0,请使用sortedArrayUsingSelector:


0
如下问题和答案下的评论所述:[NSString localizedCompare:] 是获取具有 å ä ö 的单词以正确方式排序的最佳方式。
据我所知,NSDiacriticInsensitiveSearch 将 å 视为 a,ä 视为 a,ö 视为 o 进行处理,这并不是您在对瑞典语进行排序时想要的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接