2015-02-25 2 views
0

Я пытаюсь реализовать календарь. У меня есть одна метка года и две кнопки для увеличения и уменьшения года из календаря. Я получаю это исключение (Thread1: EXC_BAD_ACCESS (code = 1, address = 0x5146a345)), при нажатии кнопки (увеличение или уменьшение) мое требование, если я нажимаю правую кнопку, мой год должен увеличиваться, а также если я нажму кнопку слева, мой год должен убывать. моя строка исключений - date = [cal dateByAddingUnit:NSCalendarUnitYear value:1 toDate:date options:0];, пожалуйста, помогите решить эту проблему. это мой кодThread1: EXC_BAD_ACCESS (code = 1, address = 0x5146a345)

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 

     date = [NSDate date]; 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"YYYY"]; 
     NSString *stringFromDate = [formatter stringFromDate:date]; 
     yar1.text=stringFromDate; 

    } 
    - (IBAction)right:(id)sender { 

     NSCalendar *cal = [NSCalendar currentCalendar]; 

     date = [cal dateByAddingUnit:NSCalendarUnitYear value:1 toDate:date options:0]; 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"YYYY"]; 
     NSString *stringFromDate = [formatter stringFromDate:date]; 
     yar1.text=stringFromDate; 

     } 
- (IBAction)left:(id)sender { 

     NSCalendar *cal = [NSCalendar currentCalendar]; 

     date = [cal dateByAddingUnit:NSCalendarUnitYear value:1 toDate:date options:0]; 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"YYYY"]; 
     NSString *stringFromDate = [formatter stringFromDate:date]; 
     yar1.text=stringFromDate; 

     } 
+0

Используйте 'yyyy' вместо «ГГГГ». – Rob

+0

Вы используете ARC, правильно? – Rob

+0

@Rob Я использую ARC –

ответ

0

Вам нужен компонент даты, чтобы изменить дату, как это,

-(NSDate *)offsetYear:(int)numOfYears date:(NSDate*)date 
{ 
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; 
[offsetComponents setYear:numOfYears]; 

return [[NSCalendar currentCalendar] dateByAddingComponents:offsetComponents 
           toDate:date options:0]; } 

Передайте смещение в 1 для правого и левого -1 для

+0

именно там, где я должен использовать ваш код. Я пытаюсь использовать метод правой кнопки, но я получаю ошибку, не могли бы вы изменить мой код как то, что вы сказали –

+0

Метод dateByAddingUnit отлично (в iOS 8). Вам не нужен объект NSDateComponents. В исходном примере кода есть что-то еще. – Rob

+0

@ Арун, что такое gregorian? –

Смежные вопросы