Ios 基于一个NSMutableArray订购两个NSMutableArray
我有两个NSMutableArray。第一个的内容是数字形式的,与第二个内容成对:Ios 基于一个NSMutableArray订购两个NSMutableArray,ios,cocoa,nsmutablearray,Ios,Cocoa,Nsmutablearray,我有两个NSMutableArray。第一个的内容是数字形式的,与第二个内容成对: First Array Second Array 45 Test45 3 Test3 1 Test1 10 Test10 20 Test20 这是两个阵列的外观。现在我怎么能把它们按数字顺序排列,结果是: First Array Seco
First Array Second Array
45 Test45
3 Test3
1 Test1
10 Test10
20 Test20
这是两个阵列的外观。现在我怎么能把它们按数字顺序排列,结果是:
First Array Second Array
1 Test1
3 Test3
10 Test10
20 Test20
45 Test45
谢谢 我会将这两个数组作为键和值放入字典中。然后可以对第一个数组进行排序(充当字典中的键),并以相同的顺序快速访问字典的值。请注意,这仅在第一个数组中的对象支持
NSCopying
时才起作用,因为NSDictionary
就是这样工作的
下面的代码应该可以做到这一点。它实际上很短,因为NSDictionary
提供了一些非常方便的方法
// Put the two arrays into a dictionary as keys and values
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:secondArray forKeys:firstArray];
// Sort the first array
NSArray *sortedFirstArray = [[dictionary allKeys] sortedArrayUsingSelector:@selector(compare:)];
// Sort the second array based on the sorted first array
NSArray *sortedSecondArray = [dictionary objectsForKeys:sortedFirstArray notFoundMarker:[NSNull null]];
与其保留两个并行数组,不如保留一个模型对象数组。第一个数组中的每个数字都是一个属性的值,第二个数组中的每个字符串都是另一个属性的值。然后可以使用对其中一个或两个属性进行排序
通常,在Cocoa和Cocoa Touch中,并行阵列工作,而模型对象节省工作。尽可能选择后者而不是前者。这被称为“索引排序”。奇怪的是,在Objective-C或大多数其他环境中都没有实现这一点的库例程,即使需求经常出现在这里。因此,最简单的方法是将条目放入另一个对象(第一个数组元素/第二个数组元素)并对这些对象进行排序,然后重建数组。否则,您必须编写自己的排序例程。很抱歉,我没有理解:(这是我第一次处理数组排序,所以我不知道:(非常好的代码,但不能处理键不唯一的情况。)。