2011-09-26 77 views
0

我有一個包含不同日期值的數組。我已經使用下面的代碼來排序日期數組,它的完成。日期數組排序問題,iPhone sdk

combinedArr = [[NSMutableArray alloc]init]; 
NSInteger counts = [pbTitle count]; 
for (int i = 0; i < counts; i++) { 

    CustomObject *customobject2 = [CustomObject customObjectWithName: 
            [pbTitle objectAtIndex:i] andDate:[pbstartDate objectAtIndex:i]]; 
    [combinedArr addObject:customobject2]; 
} 
[combinedArr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) 
{ 
    return [[(CustomObject*)obj1 date]compare: [(CustomObject*)obj2 date]]; 
}]; 
NSLog(@"Results: %@", combinedArr); 

現在的結果是在combinedArr,我需要與當前的系統時間來檢查每個值並需要加載到兩個不同的陣列,並且這兩個陣列裝載到的tableView的兩個部分。我怎樣才能實現呢?請幫我找到一個解決方案。

回答

1

我認爲最簡單和最快的(更短的運行時間)解決方案是從頭開始創建2個獨立的數組,並分別對每個數組進行排序。

像這樣:

NSDate *currentDate = [NSDate date]; 
NSMutableArray *pastArray = [[NSMutableArray alloc] init]; 
NSMutableArray *futureArray = [[NSMutableArray alloc] init]; 
NSInteger counts = [pbTitle count]; 

// Fill the arrays 
for (int i = 0; i < counts; i++) { 
    NSDate *customOnjectDate = [pbstartDate objectAtIndex:i]; 
    CustomObject *customobject2 = [CustomObject customObjectWithName:[pbTitle objectAtIndex:i] andDate:customOnjectDate]; 

    NSMutableArray *array = ([customOnjectDate compare:currentDate] == NSOrderedAscending ? pastArray : futureArray); 
    [array addObject:customobject2]; 
} 

// Sort the arrays 
[pastArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [[obj1 date] compare:[obj2 date]]; 
}]; 
[futureArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [[obj1 date] compare:[obj2 date]]; 
}]; 

// Use the arrays 
NSLog(@"pastArray: %@", pastArray); 
NSLog(@"futureArray: %@", futureArray); 

// Don't forget to release the arrays after you use them 
[pastArray release]; 
[futureArray release]; 
+0

感謝邁克爾,非常感謝。 – Mithun