2012-02-25 2 views
0

Я пытаюсь реализовать выборку веб-альбома picasa на iphone, скачав код и пример из google.code, но столкнулся с проблемой, при которой загрузка фида альбома возвращает мне фид с неправильным объектом типы - GDataEntryBase вместо GDataEntryPhoto.fetching GDataFeedPhotoAlbum возвращает неправильный тип объекта

Вот код, я использую:

Сначала я звоню это, чтобы получить все мои альбомы:

- (void)fetchAllAlbums 
{ 
    NSLog(@"Fetching all albums"); 

    //request albums 
    GDataServiceTicket *ticket;  
    NSURL *feedURL = [GDataServiceGooglePhotos photoFeedURLForUserID:myemail 
                  albumID:nil 
                  albumName:nil 
                  photoID:nil 
                   kind:nil 
                   access:nil]; 
    ticket = [_GooglePhotoService fetchFeedWithURL:feedURL 
              delegate:self 
           didFinishSelector:@selector(albumListFetchTicket:finishedWithFeed:error:)]; 
    [self set_AlbumFetchTicket: ticket]; 
} 

Теперь в обратном вызове Я призываю, чтобы получить все фотографии каждого возвращенного альбом:

- (void)albumListFetchTicket:(GDataServiceTicket *)ticket 
      finishedWithFeed:(GDataFeedPhotoUser *)feed 
         error:(NSError *)error 
{ 
    [self set_UserAlbumFeed: feed]; 
    [self set_AlbumFetchError:error]; 
    [self set_AlbumFetchTicket:nil]; 

    if (error == nil) { 
     NSLog(@"Got albums!"); 

     for (GDataEntryPhotoAlbum * albumEntry in _UserAlbumFeed) 
     { 
      NSLog(@"Album Title: %@", [[albumEntry title] stringValue]); 
      { 
       NSLog(@"Fetching photos!"); 

       [self set_AlbumPhotosFeed:nil]; 
       [self set_PhotosFetchError:nil]; 
       [self set_PhotosFetchTicket:nil]; 

       GDataServiceTicket *ticket; 
       ticket = [_GooglePhotoService fetchFeedWithURL: [[albumEntry feedLink] URL] 
                 delegate: self 
              didFinishSelector: @selector(photosTicket:finishedWithFeed:error:)]; 

       [self set_PhotosFetchTicket:ticket]; 

      } 
     } 
    } 
} 

и это принести обратный вызов для каждого альбома корма фото:

// photo list fetch callback 
- (void)photosTicket:(GDataServiceTicket *)ticket 
    finishedWithFeed:(GDataFeedPhotoAlbum *)feed 
       error:(NSError *)error 
{ 
    //tell me what class you are 
    NSLog(@"Feed class: %@", NSStringFromClass([feed class])); 

    [self set_AlbumPhotosFeed: feed]; 
    [self set_PhotosFetchError: error]; 
    [self set_PhotosFetchTicket: ticket]; 

    if (error == nil) 
    { 
     NSLog(@"Got Photos!"); 

     for (GDataEntryPhoto * photo in feed) 
     { 
      NSLog(@"Title: %@", [[photo title] stringValue]); 

      //tell me what class you are 
      NSLog(@"%@", NSStringFromClass([photo class])); 

      //NSArray * thumbnails = [[photo mediaGroup] mediaThumbnails]; 
      //NSLog(@"thumbnails count: %d", [thumbnails count]); 
      //NSLog(@"Photo thumnail url: %@", [[thumbnails objectAtIndex:0] URLString]); 
     }    
    } 
} 

Проблема в том, что записи в фиде в последнем обратном вызове не относятся к типу GDataEntryPhoto, а только к базе GDataEntryBase - и поэтому попытка получить доступ к их эскизам миниатюр приведет к сбою приложения. Код копируется из примера какао (без касания) Google, и там он работает - возвращаемый канал заполняется объектами GDateEntryPhoto.

Любая помощь была бы принята с благодарностью.

ответ

1

Добавить -ObjC -all_load в Другие флаги компоновщика в вашем xcodeproject, затем добавить SystemConfiguration.framework, CFNetwork.framework и Security.framework в Строительные Фаз ->Link Library С Binaries.

+0

Это приводит к ошибкам компоновщика, не найденным каталогам, повторяющимся символам ... –

+0

Да, потому что это заставляет все в библиотеках загружать компоновщик, что вызывает новые зависимости. Добавьте фреймворки/библиотеки с новыми ссылочными символами, и он будет работать. – DavidA

Смежные вопросы