[ios] defaultCalendarForNewEvents ist fehlgeschlagen


Answers

Die iOS-App kann keine Daten aus dem Kalender auf dem iOS6-System abrufen, wenn Sie die Funktion - requestAccessToEntityType: completion: nicht aufrufen, um einen Benutzer aufzufordern , der App Zugriff auf den Kalender / die Erinnerung zu gewähren. Der Code sieht folgendermaßen aus:

//CalendarEventHandler.h  
@interface CalendarEventHandler : NSObject
{
EKEventStore *eventStore;
}
@property (nonatomic, strong) EKEventStore *eventStore;


//CalendarEventHandler.m 
self.eventStore =[[EKEventStore alloc] init];
if([self checkIsDeviceVersionHigherThanRequiredVersion:@"6.0"]) {
        [self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {

            if (granted){
                //---- codes here when user allow your app to access theirs' calendar.

            }else
            {
                //----- codes here when user NOT allow your app to access the calendar.  
            }  
        }];

    }else {
                //---- codes here for IOS < 6.0.

    }

// Unten ist ein Block zum Überprüfen der aktuellen ios-Version höher als die erforderliche Version.

 - (BOOL)checkIsDeviceVersionHigherThanRequiredVersion:(NSString *)requiredVersion
 {
  NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

   if ([currSysVer compare:requiredVersion options:NSNumericSearch] != NSOrderedAscending)
   {
       return YES;
   }

       return NO;
  }
Question

Wenn ich versuche, [newEventStore defaultCalendarForNewEvents] aufzurufen, wird eine Fehlermeldung zurückgegeben, die besagt:

[707:907] defaultCalendarForNewEvents failed: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
[707:907] Error!Failed to save appointment. Description:Error Domain=EKErrorDomain Code=1 "No calendar has been set." UserInfo=0x1fc679f0 {NSLocalizedDescription=No calendar has been set.}

Die App läuft lange. Das Problem kam mir zum ersten Mal. Das Telefon läuft IOS6 Beta4. Das Modell ist iPhone 4. Gibt es jemanden weiß, wenn die Methode defaultCalendarForNewEvents fehlgeschlagen wird? Ich kann keine nützlichen Informationen vom googlen bekommen.




Ich hatte das gleiche Problem, aber letztendlich finde ich den Grund dafür.

Mein Fall war, meine Erinnerungen und Kalenderereignisse hinzuzufügen, aber ich benutzte einen EKEventStore . Am Ende trennte ich sie und das Problem verschwand:

private static let calendarEventStore = EKEventStore()
private static let remindersEventStore = EKEventStore()

So, jetzt verwende ich calendarEventStore für alle Dinge im Zusammenhang mit Kalenderereignis und remindersEventStore für Erinnerung.

-

Meiner Meinung nach hängt das mit der Tatsache zusammen, dass ich defaultCalendarForNewEvents und defaultCalendarForNewReminders() in einer EKEventStore Entität angefordert defaultCalendarForNewEvents .

Auch dieser von EKEventStore docs:

Ereignisse, Erinnerungen und Kalenderobjekte, die aus einem Ereignisspeicher abgerufen werden, können nicht mit anderen Ereignisspeichern verwendet werden




Gelöst. Ich habe versehentlich den App-Zugriff auf den Kalender in Setting-> Privacy auf IOS6 deaktiviert




Für Xamarin Benutzer:

EKEventStore eventStore = new EKEventStore();
eventStore.RequestAccess(EKEntityType.Event, (bool granted, NSError e) =>
{
    if (granted)
    {
       //Your code here when user gief permissions
    }
});



Related



Tags

ios ios   calendar