objective-c ios cocoa-touch cocoa nsdate

objective c - Generar NSDate de día, mes y año



objective-c ios (3)

Intento generar un NSDate de un mes día y año (todo en formato entero).

En este momento mi intento es tal:

NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; NSNumber *day = [dataSource valueForKey:@"day"]; NSNumber *month = [dataSource valueForKey:@"month"]; NSNumber *year = [dataSource valueForKey:@"year"]; [components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setMonth:[year intValue]]; NSDate *_date = [calendar dateFromComponents:components];

Sin embargo, _date genera lo siguiente cuando día = 24, mes = 8, año = 2011:

0168-07-25 04:56:02 +0000

Debo estar haciendo algo horriblemente mal, pero no tengo idea de qué. Alguien sabe lo que podría estar pasando?


Llamas a setMonth dos veces, la segunda vez al valor del año. Debiera ser:

[components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setYear:[year intValue]];


Un error flagrante es:

[components setMonth:[year intValue]]; //setting month with year!


Usted tiene un error tipográfico en su código: (la última línea debe establecerseAño setYear:

[components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setYear:[year intValue]];