NSArray of Dates sort - PullRequest
       13

NSArray of Dates sort

3 голосов
/ 23 октября 2009

Рассмотрим этот массив. У него нет ключей, поэтому я не уверен, что могу использовать NSSortDescriptor. Какой самый лучший способ их сортировать?

(
    "Thursday, July 30, 2009",
    "Monday, September 07, 2009",
    "Wednesday, September 09, 2009",
    "Friday, August 14, 2009",
    "Saturday, September 05, 2009",
    "Monday, August 10, 2009",
    "Thursday, July 23, 2009",
    "Monday, October 12, 2009",
    "Friday, October 16, 2009",
    "Monday, August 17, 2009",
    "Tuesday, October 13, 2009",
    "Wednesday, September 30, 2009",
    "Sunday, August 16, 2009",
    "Thursday, August 27, 2009",
    "Monday, August 31, 2009",
    "Saturday, August 15, 2009",
    "Thursday, August 06, 2009",
    "Saturday, September 26, 2009",
    "Tuesday, September 29, 2009",
    "Tuesday, September 15, 2009",
    "Tuesday, September 01, 2009"
)

Ответы [ 2 ]

12 голосов
/ 23 октября 2009

Вы можете использовать sortedArrayUsingFunction:

Вот пример кода.

NSInteger dateSort(id s1, id s2, void *context)
{
    NSDateFormatter* format = (NSDateFormatter*)context;
    NSDate* d1 = [format dateFromString:s1];
    NSDate* d2 = [format dateFromString:s2];

    return [d1 compare:d2];
}

...

-(void)someObjectiveCMethod
{
    NSDateFormatter* format = [[[NSDateFormatter alloc] init] autorelease];

    // Find theses format codes here:
    // http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
    //
    [format setDateFormat:@"EEEE, MMMM dd, yyyy"];

    NSArray* myArray = getMyArray();
    NSArray* sortedArray = [myArray sortedArrayUsingFunction:dateSort context:format];
}

В NSArray есть количество таких методов сортировки . Стоит взглянуть на них, чтобы ознакомиться с ними.

3 голосов
/ 23 октября 2009
NSArray * unsortedDates = ...;
NSArray * sortedDates = [unsortedDates sortedArrayUsingSelector:@selector(compare:)];
...