Ich entwickle eine Kalender-App mit Eventkit Rahmen in IOS 6. Ich versuche, die Erlaubnis mit der [self.store respondsToSelector:@selector(requestAccessToEntityType:completion:)]
-Methode und nach Erlangung der Erlaubnis zu erhalten Um auf die Kalender zuzugreifen, versuche ich, den neuen Kalender mit der Kennung EKSourceTypeLocal Quelle zu erstellen und Ereignisse zu dem neu erstellten Kalender hinzuzufügen. Ich stehe hier vor dem Problem, dass, wenn ich versuche, die App in iPhone 4s zu starten, der Fehler angezeigt wird, dass "Kalender keine Quelle hat" und es meinen Kalender nicht speichert und daher keine Ereignisse zu dem Kalender hinzugefügt werden. Ich weiß nicht, was ich hier falsch mache. Bitte leiten Sie mich, um dieses Problem zu lösen."Kalender hat keine Quelle" Fehler beim Erstellen eines neuen Kalenders mit EventKit in IOS 6
ich meinen Code bin Entsendung unter
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"in view did load method");
// For iOS 6.0 and later
self.store = [[EKEventStore alloc] init];
if([self.store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
[self.store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
// handle access here
dispatch_async(dispatch_get_main_queue(), ^{
if (granted) {
NSLog(@"permission granted");
EKCalendar *myCalendar;
EKSource *myLocalSource = nil;
for (EKSource *calendarSource in self.store.sources) {
if (calendarSource.sourceType == EKSourceTypeLocal) {
myLocalSource = calendarSource;
break;
}
}
if (!myLocalSource)
return;
NSString *mycalIndentifier = [[NSUserDefaults standardUserDefaults] valueForKey:@"my_calendar_identifier"];
if (mycalIndentifier == NULL) {
// Create a new calendar of type Local... save and commit
myCalendar = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:self.store];
myCalendar.title = @"New_Calendar";
myCalendar.source = myLocalSource;
NSString *calendarIdentifier = myCalendar.calendarIdentifier;
NSError *error = nil;
[_store saveCalendar:myCalendar commit:YES error:&error];
if (!error) {
NSLog(@"created, saved, and commited my calendar with id %@", myCalendar.calendarIdentifier);
[[NSUserDefaults standardUserDefaults] setObject:calendarIdentifier forKey:@"my_calendar_identifier"];
} else {
NSLog(@"an error occured when creating the calendar = %@", error.description);
error = nil;
}
//create an event
// Create a new event... save and commit
EKEvent *myEvent = [EKEvent eventWithEventStore:_store];
myEvent.allDay = NO;
myEvent.startDate = [NSDate date];
myEvent.endDate = [NSDate date];
myEvent.title = @"Birthday";
myEvent.calendar = myCalendar;
[_store saveEvent:myEvent span:EKSpanThisEvent commit:YES error:&error];
if (!error) {
NSLog(@"the event saved and committed correctly with identifier %@", myEvent.eventIdentifier);
} else {
NSLog(@"there was an error saving and committing the event");
error = nil;
}
EKEvent *savedEvent = [_store eventWithIdentifier:myEvent.eventIdentifier];
NSLog(@"saved event description: %@",savedEvent);
}
else{
myCalendar = [_store calendarWithIdentifier:mycalIndentifier];
}
}
else if(!granted){
NSLog(@"Permission not granted");
}
else{
NSLog(@"error = %@", error.localizedDescription);
}
});
}];
}
}
this is the error I am getting :
Predicate call to calendar daemon failed: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
not saved = Error Domain=EKErrorDomain Code=14 "Calendar has no source" UserInfo=0x1d5f6950 {NSLocalizedDescription=Calendar has no source}
UPDATE: Ich löste das Problem mit diesem Link try it
Bitte schließen als Duplikat http://stackoverflow.com/questions/12454324/defaultcalendarfornewevents-failed – jrc