对包含åäö的NSArray进行排序

时间:2011-08-23 13:26:08

标签: iphone objective-c

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

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

但这是AÅÄÖ

2 个答案:

答案 0 :(得分: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:

答案 1 :(得分:0)

正如问题和答案下面的评论所述; [NSString localizedCompare:]是使用åäö以正确方式排序的最佳方式。

根据我的理解NSDiacriticInsensitiveSearch将å和ä视为a和ö作为o,这不是你在瑞典语排序时所需要的。