Я делаю пакетную фиксацию после сохранения большого количества ekEvents. И мне нужно получить идентификатор события для каждого EKEvent. Но это не отображается после фиксации. Я знаю, что сохранение его с помощью
commit:NO
не будет создавать идентификатор события. Но обязательно после выдачи фиксации eventIdentifier должен быть заполнен.
По сути, мое приложение должно получить кучу данных о событиях календаря из веб-службы и сохранить их на устройстве. К сожалению, количество передаваемых данных может достигать 1000 событий.
Сначала я использовал это:
[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:YES error:&error];
Но объем данных, передаваемых на устройство, приводит к сбою EKEventStore из-за случайного перезапуска устройства.
В конце концов я понял, что это как-то связано с количеством коммитов, которые я бросаю в EventStore, и решил установить для коммита значение NO.
[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:NO error:&error];
И в конце цикла вызовите это:
[self.ekEventStore commit:&error];
Но тогда появляется проблема с eventIdentifier. Даже после выполнения фиксации в конце цикла каждое событие давало мне нулевое значение для eventIdentifier. Это никогда не случалось, когда я совершал каждый раз, когда сохранял в хранилище событий. Я делаю что-то неправильно? Я полагал, что после фиксации события будут регистрировать eventIdentifier для каждого экземпляра. Но это не так.
Также проблема, по-видимому, распространена у этого парня по здесь тоже.
Спасибо