我对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#中,您可以在排序/比较字符串时发送对特定文化的引用。
/尤
答案 0 :(得分:3)
查看NSString的文档可以给出答案。
您正在使用localizedCaseInsensitiveCompare:以及此州的文档
blah blah blah另见
- 比较:选项:范围:区域设置:
所以跳到compare:options:range:locale:的文档,你可以弄明白。你需要像
这样的东西return [[obj1 name] compare:[obj2 name]
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, [obj1 length])
locale:whateverLocaleYouWant];