Сортировка NSArray с использованием sortedArrayUsingFunction - PullRequest
5 голосов
/ 28 февраля 2011

Есть ли хороший пример сортировки NSArray с использованием sortedArrayUsingFunction?

TY!

Ответы [ 3 ]

7 голосов
/ 28 февраля 2011
NSArray *sorted_bookings = [myUnsortedArray sortedArrayUsingFunction:Sort_Bookingdate_Comparer context:self];   

NSInteger Sort_Bookingdate_Comparer(id id1, id id2, void *context)
{
    // Sort Function
    Booking* booking1 = (Booking*)id1;  
    Booking* booking2 = (Booking*)id2;  


    return ([booking1.BOOKING_DATE compare:booking2.BOOKING_DATE]); 
}

Это я использовал для сортировки заказов по дате бронирования.Booking - это класс с синтезированной переменной экземпляра с именем BOOKING_DATE.

1 голос
/ 28 февраля 2011

Закрыть аналог, используя NSMutableArray:

[opponentMatchDicts sortUsingFunction:compareMatchByDate context:nil];
...


static int compareMatchByDate( id m1, id m2, void *context)
{
    NSDictionary *mDict1 = (NSDictionary *) m1;
    NSDictionary *mDict2 = (NSDictionary *) m2;
    NSDate *date1 = [mDict1 objectForKey:kMatchNSDate];
    NSDate *date2 = [mDict2 objectForKey:kMatchNSDate];

    int rv = [date1 compare:date2];
    return rv;
}
1 голос
/ 28 февраля 2011

Как указано в документации: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

NSInteger intSort(id num1, id num2, void *context)
{
    int v1 = [num1 intValue];
    int v2 = [num2 intValue];
    if (v1 < v2)
        return NSOrderedAscending;
    else if (v1 > v2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...