localizedCaseInsensitiveCompare似乎不适用于瑞典语字符

Pet*_*rbo 2 sorting cocoa localization objective-c

我正在尝试按字母顺序对数组进行排序.在瑞典字母表中,字母Å是字母表中的第三个字母,因此下面的数组应该排序,A, B, Å但它的排序方式如下A, Å, B.这种行为可能是什么原因?

NSArray *test = @[@"Å", @"A", @"B"];

NSArray *sortedTest = [test sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
// Output is A, Å, B
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 5

也许当前的语言环境不是瑞典语语言环境?

如果您明确使用瑞典语语言环境对字符串进行排序,它将按预期工作:

NSArray *test = @[@"Å", @"A", @"B"];
NSLocale *swedish = [[NSLocale alloc] initWithLocaleIdentifier:@"sv"];

NSArray *sortedTest = [test sortedArrayWithOptions:0
                                   usingComparator:^(NSString  *v1, NSString *v2) {
    return [v1 compare:v2 options:NSCaseInsensitiveSearch
                 range:NSMakeRange(0, [v1 length])
                locale:swedish];
}];

// Output: A, B, Å
Run Code Online (Sandbox Code Playgroud)