У меня были некоторые проблемы с сортировкой многомерных массивов в Objective-C.У меня в основном есть массив, каждый элемент которого является массивом вида:
(NSString, NSDate, NSString, NSString)
, так что мой массив верхнего уровня имеет вид:
(
(NSString, NSDate, NSString, NSString),
(NSString, NSDate, NSString, NSString),
(NSString, NSDate, NSString, NSString),
(NSString, NSDate, NSString, NSString),
...
)
Я хотел бы иметь возможностьсортировать элементы массива верхнего уровня на основе любого из их собственных элементов.Я написал следующий код, который делает это, но оказался слишком неэффективным для больших наборов данных, с которыми я имею дело.
-(NSMutableArray *) sortArrayByDate:(NSMutableArray *) unsortedArray {
NSMutableArray * sortedArray = [[NSMutableArray alloc ] init ];
while ([unsortedArray count]>0) {
int topIndex = 0;
NSDate * topDate = [[NSDate alloc] initWithString:@"1970-01-01 00:00:00 +0600"];
for(int j=0;j<[unsortedArray count];j++) {
NSDate * targetDate = [[unsortedArray objectAtIndex:j] objectAtIndex:1];
if ([targetDate compare:topDate] == NSOrderedDescending) {
topDate = targetDate;
topIndex = j;
}
}
[sortedArray addObject:[unsortedArray objectAtIndex:topIndex]];
[unsortedArray removeObjectAtIndex:topIndex];
}
return sortedArray;
}
Может кто-нибудь предложить, как выполнить эту задачу, используя более устоявшиеся методы sortUsingSelector или sortUsingDescriptor?Если бы я сортировал одномерный массив, я думаю, что это было бы что-то вроде:
[unsortedArray sortUsingSelector: @selector(compare:)]
, но как мне сказать, чтобы он сортировал, используя n-е значение массива, который я передаю?Большое спасибо
1016 * Большое спасибо