ios - Check EKCalendar -
good day! use function "save event calendar" via uiactivityitems. in function create new calendar , add event calendar:
ekeventstore* eventstore = [[ekeventstore alloc] init]; // calendar source eksource* localsource; (eksource* source in eventstore.sources) { if (source.sourcetype == eksourcetypelocal) { localsource = source; break; } } if (!localsource) return; ekcalendar *newcalendar = [ekcalendar calendarforentitytype:ekentitytypeevent eventstore:eventstore]; calendar.source = localsource; calendar.title = @"new calendar"; nserror *errorcalendar; [eventstore savecalendar:newcalendar commit:yes error:&errorcalendar]; ekevent *event = [ekevent eventwitheventstore:eventstore]; event.title = @"title"; event.startdate = startdate; event.enddate = enddate; [event setcalendar:newcalendar]; // , etc.
and working. every next time create new calendar name "new calendar" again. how can check if calendar name exist? , how can change type of calendar? on birthday or etc.
first, need use single instance of eventstore
life of app, according apple.
therefore suggest making eventstore
property of view controller:
@property (nonatomic, retain) ekeventstore *eventstore;
and in viewdidload:
self.eventstore = [[ekeventstore alloc] init];
now can check same eventstore
instance reading , writing before anything:
-(bool)checkforcalendar { //get array of user's calendar using instance of eventstore nsarray *calendararray = [self.eventstore calendarsforentitytype:ekentitytypeevent]; // name of calendar check for. can save calendaridentifier , check if want nsstring *calnametocheckfor = @"new calendar"; ekcalendar *cal; (int x = 0; x < [calendararray count]; x++) { cal = [calendararray objectatindex:x]; nsstring *caltitle = [cal title]; // if calendar found, return yes if (([caltitle isequaltostring:calnametocheckfor]) { return yes; } } // calendar name not found, return no; return no; } -(void)savenewevent { // if calendar not exist, create before save event. if ([self checkforcalendar] == no) { // calendar source eksource* localsource; (eksource* source in eventstore.sources) { if (source.sourcetype == eksourcetypelocal) { localsource = source; break; } } if (!localsource) return; ekcalendar *newcalendar = [ekcalendar calendarforentitytype:ekentitytypeevent eventstore:eventstore]; calendar.source = localsource; calendar.title = @"new calendar"; nserror *errorcalendar; [eventstore savecalendar:newcalendar commit:yes error:&errorcalendar]; } ekevent *event = [ekevent eventwitheventstore:self.eventstore]; event.title = @"title"; event.startdate = startdate; event.enddate = enddate; [event setcalendar:newcalendar]; // , etc. }
Comments
Post a Comment