0

我对 iPhone/OSX 开发完全陌生,我正在尝试按字母顺序对填充有对象的 NSMutableArray 进行排序,但我失败了。以 Å 或 Ä 开头的项目以 A 开头的项目结束,以 Ö 开头的项目以 O 开头的项目结束。我尝试了在 Stackoverflow 上找到的不同排序方法,但它们似乎都不起作用(对我来说至少)

    NSSortDescriptor* stationDescriptor = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
    NSArray* descriptors = [NSArray arrayWithObject:stationDescriptor];
    [stations sortUsingDescriptors:descriptors];


    [stations sortUsingComparator:^NSComparisonResult(Station* obj1, Station* obj2){
        return [[obj1 name] localizedCaseInsensitiveCompare:[obj2 name]];
    }];

好,进步!通过将模拟器上的语言更改为瑞典语,我已经成功地使其工作,当手机设置为英语时,有什么办法可以得到相同的结果?我知道在 C# 中,您可以在排序/比较字符串时发送对特定文化的引用。

/维克托

4

1 回答 1

3

查看NSString的文档会给你答案。

您正在使用本地化CaseInsensitiveCompare:和此状态的文档

等等等等等等

另请参阅
- 比较:选项:范围:区域设置:

所以跳转到比较文档:options:range:locale:你可以弄清楚。你需要类似的东西

return [[obj1 name] compare:[obj2 name]
                    options:NSCaseInsensitiveSearch
                      range:NSMakeRange(0, [obj1 length])
                     locale:whateverLocaleYouWant];
于 2012-11-02T22:53:35.190 回答