iPhone saveEvent не сохраняет событие - PullRequest
1 голос
/ 16 февраля 2012

В настоящее время я тестирую приложение, которое загружает список специальных событий через XML и предоставляет их в виде списка, который пользователь затем может добавить в свой календарь.При нажатии кнопки «Добавить событие в календарь» функция срабатывает правильно, устанавливает событие с правильными датами, а функция saveEvent возвращает noErr, но событие никогда не появляется в календаре.Я проверил на двух разных айфонах и имел одинаковое поведение с обоих.Я не уверен, что происходит неправильно, так как кажется, что ничего не происходит неправильно.

Мой код события выглядит следующим образом:

- (IBAction) addEvent:(id)sender
{
    EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease];

    EKEvent *newEvent = [EKEvent eventWithEventStore:eventStore];
    newEvent.title = _event.name;

    CFTimeZoneRef zone = CFTimeZoneCopySystem();
    CFAbsoluteTime absTime = CFGregorianDateGetAbsoluteTime([_event getStartDate], zone);
    NSDate *start = [(NSDate *)CFDateCreate(nil, absTime) autorelease];

    absTime = CFGregorianDateGetAbsoluteTime([_event getEndDate], zone);
    NSDate *end = [(NSDate *)CFDateCreate(nil, absTime) autorelease];

    CFRelease(zone);

    newEvent.startDate = start;
    newEvent.endDate = end;
    newEvent.allDay = [_event getAllDay];

    newEvent.notes = _event.description;


    [newEvent setCalendar:[eventStore defaultCalendarForNewEvents]];

    NSError *err;

    [eventStore saveEvent:newEvent span:EKSpanThisEvent error:&err]; 

    if (err == noErr) {
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"Event Added"
                              message:[NSString stringWithFormat:@"%@ successfully added to calendar!", _event.name]
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}

После очистки + восстановления, я получил один измои события, чтобы показать в календаре, однако, казалось, исчезли, когда я прокручивал вверх и вниз.То же самое произошло для другой даты, которую я добавил, а затем третий тест ничего не дал.Есть ли что-то, что удаляет эти даты при прокрутке и / или выходе и повторном входе в календарь?

Ответы [ 3 ]

2 голосов
/ 07 июня 2012

Возможно, неправильный ответ, но после обновления SDK / Xcode / OS эта ошибка исчезла.

Проблема заключалась не в том, что события не добавлялись, а в том, что они исчезают после UITableView.был прокрученКогда события были добавлены и отображались на экране сразу после открытия календаря, они были бы видны, однако, если бы дата / событие не было видно, они, похоже, никогда не будут добавлены.При добавлении дат ошибок не было, поэтому отладка проблемы была невозможна.

Для продолжения тестирования на iOS 5.1 требовалось обновление ОС до Lion в качестве предварительного условия для установки Xcode 4.3 и новейшего SDK.Как только обновления были сделаны, события плавно добавлялись и оставались в списке.Не знаю почему, но, к счастью, проблема была решена.

0 голосов
/ 22 мая 2014

Возможно, больше не нужно, но в моем случае я заметил, что для сохранения любых изменений в календаре (после удаления событий или создания новых) мне также нужно было зафиксировать изменения:

NSError *error = nil;

[_eventStore commit:&error];

if(error)
{
    NSLog(@"error %@", error);
}
0 голосов
/ 16 февраля 2012

У меня было то же самое, что происходило на симуляторе.Очистка проекта и строительство снова, казалось, заставили все работать.(Я потерял день, потому что это !!)

Может быть, это будет работать для вас ...

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