2014-01-14 3 views
2

Я добавил следующий код в свое приложение. Он работает нормально, если [comps setYear: 1], но если я меняю значение года на 2 или больше, чем на 2 кода, но также не добавлять какое-либо событие в календарь. Это происходит только в iOS 7. Но если я запустил тот же код на iOS 6, его корректная работа & событие будет добавлено в календаре успешно. Есть ли ограничение в iOS 7 для добавления будущих событий?EventKit saveEvent не работает в iOS 7

-(void)addEvent{ 
    EKEventStore *es = [[EKEventStore alloc] init]; 
    EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; 
    BOOL needsToRequestAccessToEventStore = (authorizationStatus == EKAuthorizationStatusNotDetermined); 

    if (needsToRequestAccessToEventStore) { 
     [es requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
      if (granted) { 
       [self setEventForStore:es]; 
      } else { 

      } 
     }]; 
    } else { 
     BOOL granted = (authorizationStatus == EKAuthorizationStatusAuthorized); 
     if (granted) { 
      [self setEventForStore:es]; 


     } else { 

     } 
    } 
} 

-(void)setEventForStore:(EKEventStore*)store{ 
    EKEvent *event = [EKEvent eventWithEventStore:store]; 
    event.title = @"Event 4"; 

    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *comps = [NSDateComponents new]; 
    // comps.day =3650; 
    comps.day=5; 
    comps.hour=1; 
    comps.year=2; 
    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
    event.startDate = sevenDays; 

    NSDate *sevenDays1 = [event.startDate dateByAddingTimeInterval:60*60];; 
    // duration = 1 h 
    event.endDate = sevenDays1; 

    [event setCalendar:[store defaultCalendarForNewEvents]]; 
    NSError *err = nil; 
    [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err]; 
} 
` 

ответ

0

Всякий раз, когда дело с датами через компоненты, пожалуйста, установите их следующим образом:

NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; 
[comps setDay:05]; 
[comps setMonth:01]; 
[comps setYear:2014]; //instead of adding a single digit number like so: 2 

//followed by your code... 
NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
//... 

UPDATE 1

Вы упомянули, что ваше мероприятие не сохраняется в календаре, когда вы слегка корректируете целочисленные значения в компонентах NSDate. Одним быстрым способом увидеть, что происходит, является NSLogging вашей даты. Посмотрите, что такое вывод, прежде чем пытаться добавить его в свой календарь.

//Right after this below line 
NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; 

//Add the code here so we can see what `sevenDays` prints out. 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSString *strDate = [dateFormatter stringFromDate:sevenDays]; 
NSLog(@"Seven Days date = %@", strDate); 
+0

, но мой код работает нормально, если я задал год = 1, то что выдает с годом = 2? Я пробовал с вашим кодом, но все еще не показывал никаких событий в календаре. – Nitin

+0

@Nitin проверить обновление 1 и сообщить мне, что вы получаете. – Pavan

+0

если я использую [comps setDay: 05]; [comps setMonth: 01]; [comps setYear: 2014]; затем консольный вывод - Seven Days date = 19-02-4028 – Nitin

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