我有三个NSMutableArray:
NSMutableArray *dateArray;
NSMutableArray *nameArray;
NSMutableArray *imageArray
我想根据最近的日期对dateArray进行排序,然后让nameArray和imageArray基于dateArray的这个新排序顺序。
如何在不改变上面已设置的结构的情况下完成此操作?
答案 0 :(得分:1)
不考虑为什么你有三个数组,这是一个将它们“排序”在一起的算法:
sortedArrayUsingComparator:
将一个块传递给比较来“排序”这个新数组。dataArray
并比较您在那里找到的值,并将结果作为块结果返回。在此之后,您将拥有一个可用于间接索引到三个数组的整数数组,例如:类似的东西:
NSArray *sortedIndicies = [arrayOfInts sortedArrayUsingComparator:...];
// first item according to the sort
id firstDate = dateArray[sortedIndicies[0]];
id firstName = nameArray[sortedIndicies[0]];
如果需要,您当然可以使用sortedIndicies
重新排序原始的3个阵列。
还有其他方法可以实现您的需求,例如,您可以将三个数组“压缩”为三个项目的单个数组,排序,然后再“解压缩”。 NSArray
不提供Zip操作,因此您需要编写它们(两者都是一个简单的循环)。
HTH
[†]您可以根据需要使用“假”阵列,灵感见this answer - 您的实施可能更简单。