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のドキュメントを見ると、答えが得られます。

localizedCaseInsensitiveCompare:とこの状態のドキュメントを使用しています

何とか何とか何とか

関連項目
– compare:options:range:locale:

したがって、compare:options:range:locale:のドキュメントにジャンプすると、それを理解できます。次のようなものが必要になります

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