Как правильно определить событие? - PullRequest
2 голосов
/ 08 декабря 2011

В iOS класс EKEvent имеет 2 свойства в отношении идентификаторов событий: eventIdentifier и свойство uuid.При просмотре того же синхронизированного события на ical на Mac, CalEvent имеет свойство uid, но ни одно из них не соответствует моим тестам.

Кто-то знает, как правильно определить событие с обеих сторон?

Ответы [ 2 ]

2 голосов
/ 28 января 2013

Если вы используете iOS 6, попробуйте calendarItemExternalIdentifier.

Этот идентификатор позволяет получить доступ к одному и тому же событию или напоминанию на нескольких устройствах.

У меня была эта проблема с использованием основных данных, iCloud и календарей. Я захватил eventIdentifier и сохранил его в основных данных на одном устройстве, НО, когда я проверял другое устройство, в календаре изменился eventIdentifier.
Решил это, захватив calendarItemExternalIdentifier вместо eventIdentifier: Справочник по iOS

Захват календаряItemExternalIdentifier при сохранении события:

- (void)eventEditViewController:(EKEventEditViewController *)controller
      didCompleteWithAction:(EKEventEditViewAction)action {
        NSError *error = nil;
        EKEvent *thisEvent = controller.event;
        switch (action) {
            case EKEventEditViewActionCanceled:
                 // Edit action canceled, do nothing.
            break;
            case EKEventEditViewActionSaved:
            {[self.selectedClientSession setEventIdentifier:[thisEvent calendarItemExternalIdentifier]];
            .......

При отображении события в приложении запросите, является ли событие одним из наших «сеансовых» событий:

// Get the event e.g. from a tableview listing of events today    
   calendarEvent = (EKEvent*)[eventsList2 objectAtIndex:indexPath.row];
// Is this one of our session events? Build a predicate to query our clientSession objects by comparing the identifier we captured with the Event calendarItemExternalIdentifier
   self.sessionPredicate = [NSPredicate predicateWithFormat:@" eventIdentifier = %@ ",[calendarEvent calendarItemExternalIdentifier]
// Get the results
   [self setupFetchedResultsController];
//Check that calendarItemExternalIdentifier has been recorded in our session database  
   NSArray *sessionSet = [self.fetchedResultsController fetchedObjects];
//If no results then this is not a client session
   if (sessionSet.count == 0){
    // Just a regular event to display
   } else{
   //It is a client session - display and allow to do interesting stuff
   }
0 голосов
/ 04 июля 2012

Может показаться, что вторая половина свойства EKEvent eventIdentifier содержит свойство CalEvent uid.Я не знаю, каков первый идентификатор (перед двоеточием) в eventIdentifier.Кажется, это относится к календарю, но я не узнаю идентификатор.

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