1

次のようなソート記述子を使用して、辞書の配列を簡単にソートできます。

    NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name"  ascending:YES];

しかし、ローカライズされた文字列値をテーブルに入力しています。これは、その言語では並べ替えが正しくないことを意味します。

ローカライズされた値で辞書の配列を再構築する以外に、これを行うようにソート記述子を構成する方法はありますか?

深いコピーや可変要素の処理を避けるために、不変辞書を母国語に保持したいと思います。これらの辞書は JSON 表現から派生したものであり、深くなる可能性があります。

4

1 に答える 1

0

代わりに、次の方法を使用できます。

- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending comparator:(NSComparator)cmptr;

コンパレータブロックでは、2つの辞書のローカライズされたキーを取得し、それらを比較します。

NSComparator comparator= ^NSComparisonResult (id dict1, id dict2)
{
    NSString* str1=[dict1 objectForKey: @"name"];
    NSString* str2=[dict2 objectForKey: @"name"];
    NSString* localizedStr1= NSLocalizedString(str1,str1);
    NSString* localizedStr2= NSLocalizedString(str2, str2);
    return [localizedStr1 compare: localizedStr2];
};
于 2012-09-23T01:45:12.133 に答える