1

配列をソートする方法がわかりません。内部に辞書を持つ辞書を持つ配列です。開始日を取得するには、次のように書く必要があります

NSDictionary *object = [array objectAtIndex:0];
[[array objectForKey:@"DATE"]objectForKey:@"startDate"];

配列をソートしたいのですが、2番目の辞書に従ってソートする必要があるため、これを使用できません:

[array sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"startDate" ascending:YES]]];

ちょっとした調整が必要だと思いますが、方法がわかりません。

4

1 に答える 1

3

まず、オブジェクトを取得する行を のobject代わりに呼び出す必要がありarrayます。さらに、ネストされた辞書valueForKeyPathの代わりに使用できます。objectForKeyこのようなもの:

[object valueForKeyPath:@"DATE.startDate"];

同じことをソート記述子に適用するだけです。

[array sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"DATE.startDate" ascending:YES]]];

ただし、sortUsingDescriptors:ascending:これはその場でソートするメソッドであり、 で呼び出す必要があることに注意してNSMutableArrayください。配列のソートされたコピーが必要な場合は、sortedArrayUsingDescriptors:代わりにメソッドを使用してください。これが理にかなっていることを願っています...

于 2012-09-23T19:42:06.067 に答える