इस तरह आप बाहर एक कैलेंडर पहले से ही विशिष्ट शीर्षक के साथ मौजूद है या नहीं की जाँच कर सकते है। यदि यह अस्तित्व में नहीं है तो आप इसे प्रोग्रामिक रूप से बना सकते हैं।
एक बूलियन प्रकार चर घोषित
BOOL doesExist=NO;
EKEventStore *eventStore=[[EKEventStore alloc] init];
NSArray *calanders=[eventStore calendarsForEntityType:EKEntityTypeEvent];
//Now Iterate through every calendar in the array and match its title
// with the title that you want to create
for(EKCalendar calendar in calendars)
{
if([[calendar title] isEqualToString:@"youdesiredname"])
{
doesExist=YES;
}
}
// अगर हमारे bool चर मान तो अब जाँच हाँ इसका मतलब है कि एक ही नाम/शीर्षक के साथ एक कैलेंडर पहले से ही कोई exists.if तो आप बना सकते हैं
if(!doesExist)
{
NSString* calendarName = @"DesiredCalendarName";
EKCalendar* calendar;
EKSource* localSource;
for (EKSource* source in eventStore.sources) {
if (source.sourceType == EKSourceTypeLocal)
{
localSource = source;
break;
}
if (!localSource)
return;
calendar = [EKCalendar calendarWithEventStore:eventStore];
calendar.source = localSource;
calendar.title = calendarName;
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
calendar = [eventStore calendarWithIdentifier:self.calendarIdentifier];
event.calendar = calendar;
// Set the start date to the current date/time and the event duration to one hour
NSDate *startDate = [NSDate date];
event.startDate = startDate;
event.endDate = [startDate dateByAddingTimeInterval:3600];
//And to save the event to the event database:
NSError *error = nil;
BOOL result = [eventStore saveEvent:event span:EKSpanThisEvent commit:YES error:&error];
if (result)
{
NSLog(@"Saved event to event store.")
}
else
{
NSLog(@"Error saving event: %@.", saveError);
}
NSError* error;
bool success= [eventStore saveCalendar:calendar commit:YES error:&error];
if (error != nil)
{
NSLog(error.description);
}
}
आप यह देखने के लिए कैसे जांचेंगे कि कैलेंडर पहले से मौजूद है या नहीं? मैं दुर्घटना से बार-बार कैलेंडर बनाना नहीं चाहता हूं? – Slee
जब आप कैलेंडर बनाते हैं तो कैलेंडर आईडीडिएंटर नामक एक संपत्ति होती है जो एक अद्वितीय पहचानकर्ता है। उस अद्वितीय पहचानकर्ता को स्टोर करें (और ईवेंट स्टोर पहचानकर्ता भी - सुनिश्चित करें कि इसमें बदलाव नहीं हुआ है) और ईवेंट स्टोर को यह देखने के लिए जांचें कि यह बनाने से पहले यह मौजूद है या नहीं। – kurtzmarc
लेकिन यहां पकड़ है: मुझे लगता है कि यदि मेरा ऐप स्थानीय कैलेंडर बनाता है, तो उपयोगकर्ता इसे बाद में हटाने में असमर्थ है। यह एक बग की तरह लगता है। – matt