2010-09-28 56 views
0

我有一个字符串数组,其中包含日期值为:2010-09-18,2010-09-23,2010-09-27。 我需要按降序对它们进行排序,任何人都可以帮助我做到这一点。如何在Iphone sdk中以降序对包含日期值字符串的数组进行排序?

like 2010-09-27,2010-09-23,2010-09-18。

我做的其实是什么:

-(void) organizeAisleItemsIntoIndexes 
{ 
printf("\n Inside organizeAisleItemsIntoIndexes methos of WineNameController,,,!!"); 
[masterAisleItemListDictionary release]; 
masterAisleItemListDictionary = [[NSMutableDictionary alloc] init]; 
CustomerDetails *currentElement; 

for (currentElement in filteredListCount) 
{ 
    NSArray *timeStampArray = [currentElement.timeStamp componentsSeparatedByString:@" "]; 
    NSString *dateStr = [timeStampArray objectAtIndex:0]; 
    printf("\n dateStr....%s",[dateStr UTF8String]); 
    NSMutableArray *indexArray = [masterAisleItemListDictionary objectForKey:dateStr]; 
    if (indexArray == nil) 
    { 
     indexArray = [[NSMutableArray alloc] init]; 
     [masterAisleItemListDictionary setObject:indexArray forKey:dateStr]; 
     [indexArray release]; 
    } 
    [indexArray addObject:currentElement]; 
} 
masterAisleItemListIndexArray = (NSMutableArray*)[ [masterAisleItemListDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)]; 
} 

任何人的帮助将非常感激。

谢谢大家,

Lakshmi。

回答

0

我会设置一个NSDateFormatter并将这些字符串转换为日期。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd"]; 

然后我会使用NSDate compare method来订购它们并使用传统的排序算法。

NSDate *first = [formatter dateFromString:string1]; 
NSDate *second = [formatter dateFromString:string2]; 
switch ([first compare:second]) 
{ 
    case NSOrderedSame: 
     break; 
    case NSOrderedAscending: 
     break; 
    case NSOrderedDescending: 
     break; 
} 

[编辑]

或者......尝试把你的东西在列表中,并做到这一点:

NSSortDescriptor *dateSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO selector:@selector(compare:)] autorelease]; 
[list sortUsingDescriptors:[NSArray arrayWithObjects:dateSortDescriptor, nil]]; 

,但我承认我不知道很多关于NSSortDescriptor.


[编辑2]

您需要将信息放入字典中,然后将所有字典放入数组中,然后可以对该数组进行排序。

This guy gives a great example.

+0

是的,我试过了,但我失去了。这里的关键是什么? – 2010-09-28 14:44:02

+0

添加了第二个编辑。 – 2010-09-28 16:08:52

3

排序根据数据发布时间的年月日。

NSMutableArray *objArray=[[NSMutableArray alloc]init]; 

[objArray addObject:@"18/01/2013"]; 
[objArray addObject:@"16/01/2013"]; 
[objArray addObject:@"15/01/2011"]; 
[objArray addObject:@"17/01/2013"]; 
[objArray addObject:@"03/02/2012"]; 
[objArray addObject:@"05-01-2014"]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd/MM/yyyy"]; 
NSComparator compareDates = ^(id string1, id string2) 
{ 
    NSDate *date1 = [formatter dateFromString:string1]; 
    NSDate *date2 = [formatter dateFromString:string2]; 

    return [date1 compare:date2]; 
}; 

NSSortDescriptor * sortDesc = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES comparator:compareDates]; 

[objArray sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]]; 

NSLog(@"%@",objArray);*/ 
相关问题