【发布时间】:2011-02-28 20:29:57
【问题描述】:
有没有使用 sortedArrayUsingFunction 对 NSArray 进行排序的好例子?
TY!
【问题讨论】:
标签: iphone cocoa-touch ios cocoa nsarray
有没有使用 sortedArrayUsingFunction 对 NSArray 进行排序的好例子?
TY!
【问题讨论】:
标签: iphone cocoa-touch ios cocoa nsarray
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 的合成实例变量的类。
【讨论】:
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;
}
【讨论】:
使用 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;
}
【讨论】: