2013-10-04 17 views
6

Ich kann kein Ereignis im Standard-iOS-Kalender erstellen.Kann kein Ereignis im Standard-iOS 7-Kalender erstellen

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
for (EKSource *source in eventStore.sources) 
{ 
    if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal) 
    { 
     NSLog(@"I found it"); 
     break; 
    } 
} 

Ab hier konnte es keine Quellen zurückgeben. Wenn ich eine App erstelle und ausführe, gibt es keine Anfragen, den Standardkalender zu öffnen.

Alles in allem erhalte ich ein leeres Array:

[eventStore.sources count] 

Auch wenn ich ohne neues Kalenderereignis hinzufügen versuchen (

[eventStore defaultCalendarForNewEvents] 
+0

haben Sie die Erlaubnis für Veranstaltungen? –

Antwort

7

mit I denke, es ist Problem EKEventStore Zugriff auf überprüfen Erlaubnis versuchen folgende,

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]){  
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
     { 
      NSLog(@"GRANTED: %c", granted); 
      for (EKSource *source in eventStore.sources) 
      { 
       if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal) 
       { 
        NSLog(@"I found it"); 
        break; 
       } 
      } 
     }]; 

} 

Hoffe, dass es Ihnen hilft ..

+1

Sie sollten die Systemversion nicht überprüfen, aber ob die Methode verfügbar ist oder nicht: 'if ([eventStore antwortetToSelector: @selector (requestAccessToEntityType: completion:)]) {' – rckoenes

+0

@rckoenes: Sie haben Recht, Danke, ich hatte aktualisiert die Antwort. –

2

Ich habe gefunden Problem:

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
    // TODO 
}]; 

ich die Erlaubnis manuell anfordern müssen, dachte Berechtigungssatz ohne sie, ich denke, es ist in iOS 7.0.2 Build behoben hatte.

Verwandte Themen