我在Objective-C中對多維數組進行排序時遇到了一些麻煩。我基本上有一個數組,其中每個元素是一種形式的數組: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值進行排序?
- 許多感謝
- 許多感謝
謝謝,這不是我正在尋找的答案,但它是一個快速高效的解決方案。 – 2011-05-23 21:48:39
不客氣。在某些情況下,對問題的間接解決方案是最好的。祝你好運! – justin 2011-05-23 22:04:47