Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

mikezang

macrumors 6502a
Original poster
May 22, 2010
939
41
Tokyo, Japan
I have a class with fields startDate(NSDate), market(int) and allDay(BOOL), I sort them as compare methods as below, when I want to sort my array, I called such methods one by one, I think it is not good performance, but I am not sure how to combine them into one method, can you give me some suggestion?
Code:
- (NSComparisonResult)compareStartDate:(MarketEvent *)event {
	return [self.startDate compare:event.startDate]; 
}

- (NSComparisonResult)compareTime:(MarketEvent *)event {
	if (self.allDay && !event.allDay) {
		return NSOrderedAscending;
	} 
	else if (!self.allDay && event.allDay) {
		return NSOrderedDescending;
	} 
	else {
		return NSOrderedSame;
	}
}

- (NSComparisonResult)compareMarket:(MarketEvent *)event {
	if (self.market > event.market) {
		return NSOrderedAscending;
	} 
	else if (self.market < event.market) {
		return NSOrderedDescending;
	} 
	else {
		return NSOrderedSame;
	}
}
 
Last edited:
I got an idea, I will try it after I wake up, now I need to sleep...
Code:
- (NSComparisonResult)compare:(MarketEvent *)event {
    NSComparisonResult ret = [self compareStartDate:event];

    if (NSOrderedSame == ret) {
        ret = [self compareTime:event];

        if (ret == NSOrderedSame) {
             ret = [self compareMarket:event];
        }
    }

    return ret;
}
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.