2012-04-15 61 views
1

我有我認爲是一個有趣的問題。我有兩個數組,我需要合併和排序。每個數組都是一個字典對象數組,但每個字典對象的結構都不相同。所以一個數組包含每個元素都包含12個鍵/值的列表。另一個數組包含的元素包含15個鍵/值的列表。某些鍵/值可能是相同的,但不一定是相同的順序,並且不一定格式相同(例如,每個數組中的日期字段的格式不同)。objective-c合併兩個詞典數組

我需要做的(最終)是結合他們,並在一個共同的鍵 - 日期字段排序。

我不認爲一個數組可以跨不同元素具有不同的結構,可以嗎?我從來沒有用過這樣做的語言,但我問,因爲如果objective-c可以,我不會感到驚訝。

無論如何,我一直在閱讀蘋果的文檔,並且有很多很棒的排序和合並算法已經提供。但我可以使用一些幫助來決定使用什麼方法。

事實是,我只需要大約5個字段,所以我覺得我想用我想要的結構創建第三個字典數組,然後將所有項目傳送到它,然後排序。但我從哪裏開始?

如果任何人有任何這方面的經驗,我會很感激一些指導。

+0

NSArray獲取類型爲(id)的對象,因此您可以在其中填充任何內容,而不同元素的類型可以不同。要合併它們,您必須使用NSMutableArray,如下所述。 – thundersteele 2012-04-15 21:21:08

+0

謝謝,這回答了我的一個問題 - 同一陣列中的元素可能不同。這當然對我有利 - 謝謝。 – pereirap 2012-04-15 23:28:51

回答

1

Objective-C的你可以有一個的NSArray在it.Structure任何類型的對象,只包含NSArraysNSSetsNSDictionaries被稱爲收集

所以,你可以將它們合併成一個,輕鬆地按日期排序呢

因此,合併後,您可以進行排序的數組像這樣

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

要合併到NSMutableArray裏的,只需使用[firstrray addObjectsFromArray: secondArray];

+0

好吧,我同意,這看起來不錯,但日期字段的關鍵名稱是不同的每個原始數組。他們並不都是所謂的「日期」。其中一個實際上是「pubDate」,另一個是「created_at」。我想這就是扔我的東西。 – pereirap 2012-04-15 22:44:34

+0

我不得不回去重新命名一些鍵,然後合併,然後我在這裏用你的方法,尼基塔 - 謝謝。 – pereirap 2012-04-16 01:17:27