2010-10-05 12 views

Odpowiedz

20

Napisałem kategorię do tego zadania. W NSDate brakuje wielu przydatnych metod.

@interface NSDate (missingFunctions) 
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day; 
@end 


@implementation NSDate (missingFunctions) 

+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day { 
    NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
    NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease]; 
    [components setYear:year]; 
    [components setMonth:month]; 
    [components setDay:day]; 
    return [calendar dateFromComponents:components]; 
} 
@end 
+0

Działa jak urok. Dziękuję Ci :). – Carlo

+7

Tego nie brakuje. Celowo tam nie ma. Teoria mówi, że hipotetyczne '+ [NSDate dateWithYear: month: day:]' spowodowałoby, że programiści zakładaliby, że wszyscy używali kalendarza gregoriańskiego. Lepiej, w umyśle Apple, podzielić manipulację momentem w czasie ('NSDate') z manipulacji kalendarza w świecie rzeczywistym (' NSCalendar' i 'NSDateComponents'.) –

+0

thx za wyjaśnienie, nigdy nie myślał o tym w ten sposób. –