iPhone saveEvent не сохраняет событие

В настоящее время я тестирую приложение, которое загружает список специальных событий через 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 ответа

Решение

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

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

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

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

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

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

NSError *error = nil;

[_eventStore commit:&error];

if(error)
{
    NSLog(@"error %@", error);
}
Другие вопросы по тегам