1

興味深い質問だと思います。マージして並べ替える必要がある 2 つの配列があります。各配列はディクショナリ オブジェクトの配列ですが、各ディクショナリ オブジェクトの構造は異なります。したがって、1 つの配列には、たとえば 12 個のキー/値のリストを含む要素が含まれます。もう 1 つの配列には、たとえば 15 個のキー/値のリストを含む要素があります。一部のキー/値は同じかもしれませんが、必ずしも同じ順序ではなく、必ずしも同じ形式であるとは限りません (たとえば、日付フィールドの形式は各配列で異なります)。

私が(最終的に)する必要があるのは、それらを組み合わせて、1 つの共通キーである日付フィールドでソートすることです。

配列が個々の要素間で異なる構造を持つ要素を持つことはできないと思いますか? 私はこれを行う言語を使用したことがありませんが、objective-c が使用できても驚かないので質問します。

とにかく、私は Apple のドキュメントを読んでおり、ソートとマージの優れたアルゴリズムがすでにたくさん提供されています。しかし、どのアプローチを使用するかを決定するのに役立つ可能性があります。

実際のところ、必要なフィールドは 5 つだけなので、必要な構造を持つ辞書の 3 つ目の配列を作成し、すべての項目をそこに転送してから並べ替えたいと思っています。しかし、どこから始めればよいのでしょうか?

誰かがこれについて何か経験があれば、私はいくつかのガイダンスをいただければ幸いです。

4

1 に答える 1

1

Objective-Cでは、任意のタイプのオブジェクトを含むNSArrayを持つことができます。 NSArraysNSSets、およびNSDictionariesのみで構成される構造は、 Collectionと呼ばれます。

そのため、それらを 1 つにマージして、日付で簡単に並べ替えることができます

したがって、マージ後、配列を次のように並べ替えることができます

NSSortDescriptor *sortByDateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date"
                                              ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByDateDescriptor];
NSArray *sortedArray = [mergedArray sortedArrayUsingDescriptors:sortDescriptors];   

NSMutableArrayにマージするには、単に使用します[firstrray addObjectsFromArray: secondArray];

于 2012-04-15T20:58:50.420 に答える