2012-04-15 22 views
1

私は興味深い質問だと思います。私はマージとソートが必要な2つの配列を持っています。各配列は辞書オブジェクトの配列ですが、各辞書オブジェクトの構造は異なります。したがって、1つの配列には、それぞれ12個のキー/値のリストを含む要素が含まれています。他の配列には、例えば15個のキー/値のリストを含む要素があります。いくつかのキー/値は同じでも同じ順序である必要はなく、必ずしも同じ形式である必要はありません(たとえば、日付フィールドは各配列で異なる形式になります)。objective-c辞書の2つの配列をマージする

私は(結局のところ)必要なのはそれらを組み合わせて、共通のキー(日付フィールド)を並べ替えることです。

配列に個々の要素に異なる構造の要素があるとは思いませんか?私はこれを行う言語を使ったことはありませんが、客観的なことができれば驚くことはないので私は尋ねます。

とにかく、私はAppleのドキュメントを読んできました。既に提供されている多くの素晴らしいソートとマージアルゴリズムがあります。しかし、私はどのアプローチを使用するかを決める助けをすることができます。

実際には約5つのフィールドしか必要ないので、必要な構造で辞書の3番目の配列を作成してから、すべてのアイテムをその中に転送してから並べ替えたいと思っています。しかし、どこから始めるのですか?

誰もがこれに関する経験があれば、私はいくつかのガイダンスに感謝します。 Objective-CのはあなただけNSArraysNSSetsNSDictionariesで構成されていit.Structure内のオブジェクトのいずれかのタイプ、とNSArrayのを持つことができます

+0

NSArrayは(id)型のオブジェクトを取ります。そのため、そこに何かを埋め込むことができ、異なる要素の型が異なることがあります。それらをマージするには、以下で説明するようにNSMutableArrayを使用する必要があります。 – thundersteele

+0

ありがとう、それは私の質問の1つに答える - 同じ配列内の要素は異なる可能性があります。それは確かに私の好意で動作します - ありがとう。 – pereirap

答えて

1

コレクションと呼ばれています。

だから、あなたが1にマージし、簡単に日付そう

ことによってそれを並べ替えることができ、マージした後、あなただけの[firstrray addObjectsFromArray: secondArray];を使用し、NSMutableArrayののにマージするには、この

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

のようなあなたの配列をソートでき

+0

これは素晴らしいことですが、元の配列ごとに日付フィールドのキー名が異なります。それらはすべて「日付」と呼ばれるわけではありません。 1つは実際には「pubDate」で、もう1つは「created_at」です。私はそれが私を投げていると思う。 – pereirap

+0

私は戻っていくつかのキーの名前を変更してからマージしなければなりませんでした。 – pereirap

関連する問題