Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 基于一个NSMutableArray订购两个NSMutableArray_Ios_Cocoa_Nsmutablearray - Fatal编程技术网

Ios 基于一个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

我有两个NSMutableArray。第一个的内容是数字形式的,与第二个内容成对:

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或大多数其他环境中都没有实现这一点的库例程,即使需求经常出现在这里。因此,最简单的方法是将条目放入另一个对象(第一个数组元素/第二个数组元素)并对这些对象进行排序,然后重建数组。否则,您必须编写自己的排序例程。很抱歉,我没有理解:(这是我第一次处理数组排序,所以我不知道:(非常好的代码,但不能处理键不唯一的情况。)。