Wie kann ich Objective-C verwenden, um programmgesteuert ein iCal-Ereignis im Standardkalender zu erstellen? Ich möchte prüfen, ob das Event bereits existiert und den Button-Status entsprechend setzen.Wie kann ich programmgesteuert ein iCal-Ereignis im Standardkalender erstellen?
23
A
Antwort
15
Ein Beispiel für die programmgesteuerte Erstellung eines iCAL-Ereignisses im Standardkalender unter Verwendung von Objective-C. Der Code prüft, ob das Ereignis bereits existiert, und setzt den Status der Schaltfläche entsprechend. Hier ist der Code von @codeburger:
-(void)initCalendar {
// An array of 1 dictionary object, containing START and END values.
NSMutableArray* pvDict = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:PV_URL ]];
// Check if the private view event already exists in the default calendar.
// Then set the calendar button state.
// Get a entry point to the Calendar database.
self.store = [[EKEventStore alloc ] init ];
// Get an array of all the calendars.
NSArray *calendars = store.calendars;
// Get the default calendar, set by the user in preferences.
EKCalendar *defaultCal = store.defaultCalendarForNewEvents;
// Find out if this calendar is modifiable.
BOOL isDefaultCalModifiable = defaultCal.allowsContentModifications ;
// Create an event in the default calendar.
self.event = [ EKEvent eventWithEventStore:store ];
self.event.title = CHELSEA_SPACE ;
self.event.location = CHELSEA_ADDRESS ;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyy-MM-dd HH:mm:ss.S"];
NSString *startString = [[ pvDict objectAtIndex:0] objectForKey:@"starts" ];
NSDate *dateStart = [dateFormatter dateFromString:startString];
NSString *endString = [[ pvDict objectAtIndex:0] objectForKey:@"ends" ];
NSDate *dateEnd = [dateFormatter dateFromString:endString];
self.event.startDate = dateStart;
self.event.endDate = dateEnd;
self.event.calendar = defaultCal ;
// Alternative code to add 2.5 hours to start time.
// [[NSDate alloc] initWithTimeInterval:9000 sinceDate:event.startDate];
// Search for events which match this date/time start and end.
// Compare the matched events by event TITLE.
NSPredicate *predicate = [store predicateForEventsWithStartDate:event.startDate
endDate:event.endDate calendars:calendars];
NSArray *matchingEvents = [store eventsMatchingPredicate:predicate];
self.calendarButton.enabled = NO;
if(! isDefaultCalModifiable) {
// The default calendar is not modifiable
return ;
}
if ([ matchingEvents count ] > 0) {
// There are already event(s) which match this date/time start and end.
// Check if this event is the PV
EKEvent *anEvent;
int j;
for (j=0; j < [ matchingEvents count]; j++) {
anEvent = [ matchingEvents objectAtIndex:j ] ;
if([ CHELSEA_SPACE isEqualToString: anEvent.title ]) {
// PV event already exists in calendar.
return;
}
}
[ anEvent release ];
}
self.calendarButton.enabled = YES;
[ pvDict release ];
}
-(void)addEventToCalendar:(id)sender {
NSError *error;
BOOL saved = [self.store saveEvent:self.event span:EKSpanThisEvent error:&error];
NSLog(@"Saved calendar event = %@\n", (saved ? @"YES" : @"NO"));
self.calendarButton.enabled = NO;
}
ich diese Frage ohne Antwort gesehen habe und hatte das Gefühl, es zu @codeburger volle Punktzahl geben bearbeitet werden soll.
9
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
NSDate *date = [[NSDate alloc ]init];//today,s date
event.title = @"remainder";//title for your remainder
event.startDate=date;//start time of your remainder
event.endDate = [[NSDate alloc] initWithTimeInterval:1800 sinceDate:event.startDate];//end time of your remainder
NSTimeInterval interval = (60 *60)* -3 ;
EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:interval]; //Create object of alarm
[event addAlarm:alarm]; //Add alarm to your event
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
NSString *ical_event_id;
//save your event
if([eventStore saveEvent:event span:EKSpanThisEvent error:&err]){
ical_event_id = event.eventIdentifier;
NSLog(@"%@",ical_event_id);
}
for more info check this link
Verwandte Themen
- 1. Kann ich ein Google-Konto programmgesteuert erstellen?
- 2. Wie programmgesteuert ein UIScrollView erstellen?
- 3. Wie kann ich den Standardkalender von Android OS ersetzen?
- 4. Ich kann eine Datenbank programmgesteuert nicht erstellen
- 5. Wie kann ich eine PDF-Datei programmgesteuert mit C erstellen?
- 6. Wie kann ich diese benutzerdefinierte Bindung programmgesteuert erstellen?
- 7. Wie kann ich PowerPoint-Präsentationen programmgesteuert erstellen? Unter Linux. Kostenlos.
- 8. AngularJS - Wie kann ich programmgesteuert einen neuen, isolierten Bereich erstellen?
- 9. Wie kann ich ein EDGE-Netzwerk oder ein schlechtes Netzwerk im iPhone programmgesteuert erkennen?
- 10. Wie programmgesteuert GPO erstellen?
- 11. Wie kann ich programmgesteuert öffnen (im Bildschirm anzeigen) NavigationView
- 12. Wie erstelle ich ein Cocoa-Fenster programmgesteuert?
- 13. Wie kann ich programmgesteuert ein div mit eigenen Bildlaufleisten scrollen?
- 14. Wie kann ich ein HTML-Popup erstellen?
- 15. EventKit erstellt und einen Standardkalender automatisch
- 16. Wie kann ich ein zweispaltiges Drucklayout erstellen?
- 17. Wie kann ich ein Kakao NSSearchField programmgesteuert zurücksetzen?
- 18. Wie kann ich JDT-Compiler programmgesteuert verwenden?
- 19. Wie programmgesteuert eine ProgressBar erstellen?
- 20. Wie programmgesteuert KMZ-Datei erstellen?
- 21. Erstellen Sie ein Homescreen-Widget GUI programmgesteuert
- 22. Wie kann ich ein iOS-Gerät programmgesteuert Musik wiedergeben lassen?
- 23. Wie kann ich ein Shelltoast erstellen?
- 24. Wie kann ich ein neues Zahlenanzeigeformat erstellen?
- 25. Wie kann ich ein MSI-Setup erstellen?
- 26. Django: Wie kann ich ein Mehrfachauswahlformular erstellen?
- 27. Wie kann ich ein CSS-Gleitmenü erstellen?
- 28. So erstellen Sie ein UIButton programmgesteuert
- 29. erstellen Sie ein Steuerelement programmgesteuert mit MFC
- 30. Erstellen Sie programmgesteuert ein UIButton in Swift
Was ist Ihre Frage? – RunLoop
Es ist keine Frage. Es ist ein nettes Stück für Leute wie mich, die ein solides Beispiel suchen. –
Können Sie die Frage * bearbeiten, um es zu einer Frage zu machen * und dann das Snippet als Antwort hinzufügen? Wenn Sie dies tun, können Sie Ihre als richtige Antwort auswählen. Es mag seltsam erscheinen, aber es ist der bevorzugte Weg, mit solchen Situationen umzugehen. – Will