我认为这是一个有趣的问题。我有两个数组,我需要合并和排序。每个数组都是一个字典对象数组,但每个字典对象的结构都不同。因此,一个数组包含元素,每个元素包含一个列表,例如12个键/值。另一个数组包含的元素包含15个键/值的列表。一些键/值可以是相同的,但不一定是相同的顺序,并且不必格式化相同(例如,日期字段在每个阵列中的格式不同)。
我需要做的(最终)是将它们组合在一起,并对一个公共密钥 - 日期字段进行排序。
我不认为数组可以在各个元素中具有不同结构的元素,可以吗?我从来没有使用过会这样做的语言,虽然我问,因为如果Objective-c可以,我也不会感到惊讶。
无论如何,我一直在阅读Apple的文档,并且已经提供了很多很好的排序和合并算法。但我可以使用一些帮助来决定使用什么方法。
事实是,我只需要大约5个字段,所以我觉得我想用我想要的结构创建第三个字典数组,然后将所有项目转移到其中,然后排序。但是我从哪里开始呢?
如果有人对此有任何经验,我会很感激一些指导。
答案 0 :(得分:1)
在 Objective-C 中,您可以在 NSArray 中包含任何类型的对象。结构,仅包含 NSArrays ,< strong> NSSets 和 NSDictionaries 称为集合。
因此,您可以将它们合并为一个,并按日期轻松对其进行排序
因此,在合并之后,您可以像这样对数组进行排序
NSSortDescriptor *sortByDateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByDateDescriptor];
NSArray *sortedArray = [mergedArray sortedArrayUsingDescriptors:sortDescriptors];
要合并到 NSMutableArray的,只需使用[firstrray addObjectsFromArray: secondArray];