Как отсортировать массив в порядке убывания, который содержит строку значения даты в нем в Iphone SDK? - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть строковый массив, который содержит значения даты как: 2010-09-18,2010-09-23,2010-09-27.Мне нужно отсортировать их в порядке убывания, может кто-нибудь, пожалуйста, помогите мне сделать это.

как 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:)];
 }

Любая помощь будет высоко оценена.

Спасибо за все,

Лакшми.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2014

Сортировка по дате в соответствии с данными .. дата месяц и год.

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);*/
0 голосов
/ 28 сентября 2010

Я бы настроил NSDateFormatter и преобразовал бы эти строки в Даты.

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

Затем я бы использовал NSDate метод сравнения , чтобы упорядочить их и использовать традиционныйалгоритм сортировки.

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]

Вам необходимо поместить информацию в словарь, а затем все словари в массив, а затем вы можете отсортировать этот массив.

Этот парень приводит отличный пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...