Я пытаюсь реализовать выборку веб-альбома 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.
Любая помощь была бы принята с благодарностью.
Это приводит к ошибкам компоновщика, не найденным каталогам, повторяющимся символам ... –
Да, потому что это заставляет все в библиотеках загружать компоновщик, что вызывает новые зависимости. Добавьте фреймворки/библиотеки с новыми ссылочными символами, и он будет работать. – DavidA