2012-04-15 58 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