2012-01-08 7 views
4

localizedCaseInsensitiveCompare:とcaseInsensitiveCompare:の違いは何ですか?私は次のコード行を使用するつもりだった

[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 

「をcaseInsensitiveCompareは、」私は、文字列で使用して慣れている方法です。しかし、私が使用していることを示している例は、用途から:

[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; 

です(違いはローカライズされた単語です)。この言葉は何をするのですか?「局所化」方法と通常の方法とはどう違うのですか?

アップルのデベロッパー向けのドキュメントは、これらの2つの方法がどのように異なるのか非常に有益ではありません。

+0

アプリの場合、それがあることを意味する(単にローカライズ-方法です複数の言語がある場合は、それを使用する必要があります)。 – Emil

答えて

10

NSStringは、caseInsensitiveCompareとlocalizedCaseInsensitiveCompareの両方のメソッドを提供します。

特定のロケールによって、異なるソート基準が定義される場合があります。さまざまなロケール用にローカライズされたテキストを使用して作業している場合は、ローカライズ版を使用してください。それ以外の場合は、標準バージョンを使用してください。

13

これは、コンパレータが比較の際に各国文字セットを使用することを意味します。 LTEST、LTEST、MTEST、ZTEST文字列:

我々は、文字列を持っているときポリッシュ言語は、設定国家charatersに、例ではLとM.

の間で、文字lを、持っている例では
caseInsensitiveCompareは結果になります:LTEST、MTEST、ZTEST、LTEST
localizedCaseInsensitiveCompareが結果になります:LTEST、LTEST、MTEST、ZTEST

5

localizedCaseInsensitiveCompare:caseInsensitiveCompare:のローカライズされたバージョンです。英語のロケールではそれほど大きな違いはありません。 ł, ą, ęなど、スペイン語の場合はñ, é, áなど、スペイン語の場合はç, è, êなどです。ロケールによってアルファベットの位置が異なります。

5

localizedCaseInsensitiveCompare:メソッドは、データのソート時に現在のロケール([NSLocale currentLocale])に存在するすべてのルールを使用します。これらのルールには、番号付けの優先順位、非ASCII文字の順序付けなどが含まれます。

基本的に、文字コードに基づいて注文する予定がない場合は、ローカライズされた方法を使用する必要があります。

あなたが前にローカライズで働いていない場合、私は次のリンクをチェックアウトをお勧めします:

関連する問題