Idade extraída da data de nascimento sempre desativada por quantidade inconsistente

Estou usando o código a seguir para converter uma data de nascimento fornecida pelo usuário em anos equivalentes a partir da data atual. A saída é sempre desligada por uma quantidade inconsistente em anos e números muito grandes em dias e 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);

O que é gerado quando eu insiro"06-16-1986" é o seguinte

Anos: 28, Dias: 9223372036854775807, Meses: 9223372036854775807

O ano termina em 1 e os meses e dias estão produzindo números extremamente grandes. Eu recebo o mesmo problema usando várias datas. Por exemplo,"12-07-1989" produz

Anos: 25, Dias: 9223372036854775807, Meses: 9223372036854775807

O que eu estou fazendo errado aqui?

questionAnswers(2)

yourAnswerToTheQuestion