Получение события календаря из EventStore возвращает ноль - PullRequest
0 голосов
/ 05 июня 2018

Я был разочарован Целью C последние 2 дня.Мы создаем простое приложение для чтения, записи и обновления событий в календаре iOS (iOS 9 и более поздние версии).Мы выбрали Objective C. в качестве языка программирования.

На данный момент мы можем читать календари и добавлять новые события календаря, используя Event Store. , но у нас возникла большая проблема при получении календаряСобытия со следующим кодом:

EKEvent* event = [eventStore eventWithIdentifier: eventId];

Всегда возвращается nil, и мы не можем удалить событие из календаря.

Это код, который мы используем в настоящее время длядобавить новое событие:

if([eventStore saveEvent:myEvent span:EKSpanThisEvent error:&error]) {
    if (error) {
        return nil;
    } else {
        NSString* id = myEvent.eventIdentifier;

        return id;
    }
} else {
    return nil;
}

Возвращает правильный идентификатор события, ошибки нет и событие отображается в календаре.

1 Ответ

0 голосов
/ 05 июня 2018

Сначала вам нужно запросить разрешение следующим образом:

- (void)askForPermissionUpdateEventStore
{
    /* This two variables you need to declare like a properties */
    __block BOOL isAuthorized = NO;
    EKEventStore *eventStore;

    /* From this is the code required to ask for permission */
    EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType: EKEntityTypeEvent];

    switch (authorizationStatus) {
        case EKAuthorizationStatusDenied:
        case EKAuthorizationStatusRestricted: {
            isAuthorized = NO;
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Access Denied"
                                                                message:@"This app doesn't have access to your events." delegate:nil
                                                      cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
            [alertView show];
            break;
        }
        case EKAuthorizationStatusAuthorized:
            isAuthorized = YES;
            break;

        case EKAuthorizationStatusNotDetermined: {
            [eventStore requestAccessToEntityType:EKEntityTypeEvent
                                            completion:^(BOOL granted, NSError *error) {
                                                dispatch_async(dispatch_get_main_queue(), ^{
                                                    isAuthorized = granted;
                                                });
                                            }];
            break;
        }
    }
}

Итак, после этого вы можете записывать и читать события из Календаря iOS, процесс аналогичен напоминаниям.object EKEntityTypeReminder или, если хотите, можете проверить это EventKit Tutorial , я надеюсь, он вам поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...