Edad extraída de la fecha de nacimiento siempre desactivada por cantidad inconsistente

Estoy usando el siguiente código para convertir una fecha de nacimiento proporcionada por el usuario a sus años equivalentes a partir de la fecha actual. La salida siempre está apagada por una cantidad inconsistente en años y números muy grandes en días y meses.

NSDateFormatter *tempFormatter = [[NSDateFormatter alloc] init];
[tempFormatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];
NSDate *birthDate = [tempFormatter dateFromString:[NSString stringWithFormat:@"%@-%@-%@ 01:00:00",self.birthYear.text,self.birthMonth.text,self.birthDay.text]];

NSDate* now = [NSDate date];
NSDateComponents* ageComponents = [[NSCalendar currentCalendar]
                                   components:NSYearCalendarUnit
                                   fromDate:birthDate
                                   toDate:now
                                   options:0];
NSInteger years = [ageComponents year];
NSInteger days = [ageComponents day];
NSInteger months = [ageComponents month];
NSLog(@"Years: %ld, Days: %ld, Months: %ld",years,days, months);

Lo que sale cuando ingreso"06-16-1986" es el siguiente

Años: 28, Días: 9223372036854775807, Meses: 9223372036854775807

El año está apagado en 1 y los meses y días están produciendo números extremadamente grandes. Me sale el mismo problema usando varias fechas. Por ejemplo,"12-07-1989" produce

Años: 25, Días: 9223372036854775807, Meses: 9223372036854775807

¿Qué estoy haciendo mal aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta