2016-07-15 2 views
1

내가이Ekevents가 캘린더에 여러 번 추가됩니까? 내 응용 프로그램에서

if ([db.saveCalenderSettings isEqualToNumber:[NSNumber numberWithBool:YES]]){ 

    NSPredicate *predicateForEventOnDate = [store predicateForEventsWithStartDate:strtdate endDate:[strtdate dateByAddingTimeInterval:60*60] calendars:nil];          
    NSArray *eventsOnDate = [store eventsMatchingPredicate:predicateForEventOnDate]; 

    __block BOOL eventExists = NO; 

    [eventsOnDate enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 

     EKEvent *eventToCheck = (EKEvent*)obj; 

     if([note isEqualToString:eventToCheck.notes]) { 
      eventExists = YES; 
      *stop = YES; 
     } 
    }]; 
    NSLog(@"%@",eventsOnDate); 
    if(! eventExists) { 
     NSLog(@"Event not exists so adding"); 

     EKEvent *event = [EKEvent eventWithEventStore:store]; 
     event.title = subject; //give event title you want 
     event.notes = note ; 
     event.startDate = strtdate; 
     event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; 
     event.calendar = [store defaultCalendarForNewEvents]; 
     // EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60*15*-1]; 
     // event.alarms = [NSArray arrayWithObject:alarm]; 

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

     if (!err) { 

      [db setSavedtocalender:@"yes"]; 

     } 
     else { 
       // NSLog(@" Event not created"); 
       [db setSavedtocalender:@"no"]; 

     } 
    } 
    else { 
     NSLog(@"Event exists"); 
     [db setSavedtocalender:@"yes"];        
    } 
}         

같은 일을 오전 calendar.I 장치에 이벤트를 추가하고 그러나 문제는 내가 갈거야 어디 사람이 나에게 말한다 .Can 같은 이벤트가 기본 일정에 여러 번 추가됩니다입니다 잘못된?

+0

@Nirav이 – hacker

+0

을하여 같은 일을하고있다 실수는 SagarShirbhate 대신 태그를 붙입니다 :) –

답변

1

안녕하세요 각각의 모든 이벤트에 대해 하나의 ID가 할당됩니다. 이벤트가 추가되었는지 확인하십시오. 이벤트가 추가되면 이벤트 ID를 저장하고 이벤트 저장을 다시 시작하기 전에 확인하십시오. 이벤트 ID를 얻기 위해

:

미래 refernce를 들어
//save the event id if you want to access this later 
NSString *eventId=event.eventIdentifier; 

: 난 그게 전부 이순신 .SO 이벤트 식별자를 사용 할 수없는 나는 어떤 이유로

// To add event in Calender App 

    EKEventStore *store = [EKEventStore new]; 
    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
     if (!granted) { return; } 
     EKEvent *event = [EKEvent eventWithEventStore:store]; 
     event.title = @"To meet Chandu."; 
     event.startDate = [NSDate date]; //today 
     event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting 
     event.calendar = [store defaultCalendarForNewEvents]; 
     [email protected]"Sandriver Technologies"; 
     NSError *err = nil; 
     [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err]; 
     NSLog(@"%@",event.eventIdentifier); //save the event id if you want to access this later 
     eventId=event.eventIdentifier; 
    }]; 



    //to remove event from app 

    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
     if (!granted) { return; } 
     EKEvent* eventToRemove = [store eventWithIdentifier:eventId]; 
     if (eventToRemove) { 
      NSError* error = nil; 
      [store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&error]; 
     } 
    }]; 



// Note: Get all event list 

    //To get Appropriate calender 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 


    if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
    { 
     /* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */ 
     [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
     { 
      if (granted) 
      { 
       NSLog(@"User has granted permission!"); 
       // Create the start date components 
       NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init]; 
       oneDayAgoComponents.day = -1; 
       NSDate *oneDayAgo = [calendar dateByAddingComponents:oneDayAgoComponents 
                   toDate:[NSDate date] 
                   options:0]; 

       // Create the end date components 
       NSDateComponents *oneYearFromNowComponents = [[NSDateComponents alloc] init]; 
       oneYearFromNowComponents.year = 1; 
       NSDate *oneYearFromNow = [calendar dateByAddingComponents:oneYearFromNowComponents 
                    toDate:[NSDate date] 
                    options:0]; 

       // Create the predicate from the event store's instance method 
       NSPredicate *predicate = [store predicateForEventsWithStartDate:oneDayAgo 
                     endDate:oneYearFromNow 
                     calendars:nil]; 

       // Fetch all events that match the predicate 
       NSArray *events = [store eventsMatchingPredicate:predicate]; 
       NSLog(@"The content of array is%@",events); 
      } 
      else 
      { 
       NSLog(@"User has not granted permission!"); 
      } 
     }]; 
    } 
+0

이 답변으로 문제가 해결되면 알려주세요. –

+0

어떤 이유로 나는 이벤트 식별자를 사용할 수 없다. .so thats 나는 event.becoz의 notes 속성에 액세스하려고 시도하고있다. 유일한 유일한 것은있다. – hacker

+0

당신은 모든 이벤트가 당신이 어디에 있는지 특정 날에 검사 할 수있다. 이벤트를 추가합니다. –