Почему в моем GDataEntryCalendarEvent нет времени? - PullRequest
1 голос
/ 07 февраля 2012

Я использую GDataServiceGoogleCalendar, чтобы анонимно получить GDataFeedCalendarEvent из публичного URL.Но я абсолютно не могу получить время из любого из GDataEntryCalendarEvent объектов.Я могу прочитать заголовок, поэтому я считаю, что API работает, но почему-то временные массивы где-то теряются.

Служба создается следующим образом:

- (GDataServiceGoogleCalendar *)calendarService {

    static GDataServiceGoogleCalendar* service = nil;

    if (!service) {
        service = [[GDataServiceGoogleCalendar alloc] init];

        [service setShouldCacheResponseData:YES];
        [service setServiceShouldFollowNextLinks:YES];
        [service setIsServiceRetryEnabled:YES];
    }

    return service;
}

Это код, в которомданные получены:

for (GDataEntryCalendarEvent *event in eventEntries) {
    NSString *title = [[event title] stringValue];

    GDataDateTime *startTime = nil;
    GDataDateTime *endTime = nil;

    NSArray *times = [event times];
    GDataWhen *when = nil;
    if ([times count] > 0) {
        when = [times objectAtIndex:0];
        startTime = [when startTime];
        endTime = [when endTime];
    }
}

Что не так с моим кодом или способом подключения?Пример приложения успешно извлекает даты.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2012

API Google требует использования фактически идентифицированного пользователя даже для доступа к общедоступным данным.Таким образом, доступ к большинству вызовов API не предоставляется, пока не используется аутентифицированная учетная запись пользователя.

0 голосов
/ 07 февраля 2012

Извините, но я не могу ответить, что не так с вашим кодом.У меня были проблемы с датой событий, и это было мое решение, которое отлично работает для меня:

Надеюсь, это поможет вам:

         NSArray *events = [feed entries];  

        [events enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
              GDataEntryEvent *entry = [events objectAtIndex:idx];

             for (NSUInteger i=0; i<[[entry times] count]; i++) {
             NSDate * startDate = [[[[entry times] objectAtIndex:i] startTime] date];
             NSDate * endDate = [[[[entry times] objectAtIndex:i] endTime] date];
         } 
         }];

Возможно, есть лучший способ, но этоработы.

...