基于一个订购两个NSMutableArrays
我有两个NSMutableArrays。 第一个的内容是数字的,与第二个的内容配对:
First Array Second Array 45 Test45 3 Test3 1 Test1 10 Test10 20 Test20
这是两个arrays的外观。 现在我怎么能这样命令他们,所以他们最终结果如下:
First Array Second Array 1 Test1 3 Test3 10 Test10 20 Test20 45 Test45
谢谢!
我将这两个数组放入一个字典作为键和值。 然后,您可以sorting第一个数组(作为字典中的键),并以相同的顺序快速访问字典的值。 请注意,这只有在第一个数组中的对象支持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]];
而不是保持两个平行的数组,我会保持一个模型对象的数组。 第一个数组中的每个数字将是一个属性的值,第二个数组中的每个string将是另一个属性的值。 然后,您可以使用sorting描述符对一个或两个属性进行sorting 。
通常,在Cocoa和Cocoa Touch中,并行数组可以在模型对象保存工作的同时进行工作。 尽可能地把前者放在前者上面。