NSInvalidArgumentException причина: параметр данных равен нулю в UITableView при попытке отобразить изображения Flickr

Привет в моем приложении я хочу отобразить Flickr список альбомов в UITableView поэтому я долго искал и нашел какое-то решение. Я использовал метод, который приведен в решении не работает, как ошибка

NSInvalidArgumentException', reason: 'data parameter is nil

Ссылка на решение нажмите здесь

И так как я пытаюсь это сделать впервые, я не могу решить эту проблему. Это МОЯ API ССЫЛКА на Flickr

Я использовал этот код для отображения списка альбомов изображений Flickr в UItableview

{
   NSMutableArray *photoURLs;
   NSMutableArray *photoSetNames;
   NSMutableArray *photoid1;
}

Мой Flickr API ключ

#define  FlickrAPIKey @"a6a0c7d5efccffc285b0fe5ee1d938e3"

  - (void)viewDidLoad
{
    [super viewDidLoad];
     photoURLs = [[NSMutableArray alloc] init];
     photoSetNames = [[NSMutableArray alloc] init];
     photoid1 = [[NSMutableArray alloc] init];
    [self loadFlickrPhotos];

}

Мой код TableView

  - (void)loadFlickrPhotos
 {
      NSString *urlString = [NSString stringWithFormat:@"http://api.flickr.com/services/rest/?method=flickr.photosets.getList&api_key=%@&user_id=%@&per_page=10&format=json&nojsoncallback=1", FlickrAPIKey, @"124757153@N04"];
      NSURL *url = [NSURL URLWithString:urlString];

      NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

      NSDictionary *results = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
      NSArray *photosets = [[results objectForKey:@"photosets"] objectForKey:@"photoset"];
   for (NSDictionary *photoset in photosets) {

       NSString *title = [[photoset objectForKey:@"title"] objectForKey:@"_content"];
      [photoSetNames addObject:(title.length > 0 ? title : @"Untitled")];
       NSString *photoid = [photoset objectForKey:@"id"];
      [photoid1 addObject:photoid];

     }
  }
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

      return [photoSetNames count];
}

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *cellIdentifier =@"Cell";

     flickrpoliticalCell *cell =(flickrpoliticalCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
  if (cell == nil) {

       cell = [[flickrpoliticalCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
     }
    cell.tit.text = [photoSetNames objectAtIndex:indexPath.row];
    return cell;
}

1 ответ

Решение

Попробуй это

- (void)loadFlickrPhotos
{

//
NSString *urlString = [NSString stringWithFormat:@"https://www.flickr.com/services/rest/?method=flickr.photosets.getList&api_key=a6a0c7d5efccffc285b0fe5ee1d938e3&format=json&user_id=124757153@N04&per_page=10&nojsoncallback=1",nil];

NSLog(@"the url string==%@",urlString);
NSURL *url = [NSURL URLWithString:urlString];

NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

NSLog(@"the str==%@",jsonString);

NSDictionary *results = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
   NSArray *photosets = [[results objectForKey:@"photosets"] objectForKey:@"photoset"];


for (NSDictionary *photoset in photosets) {

    NSString *title = [[photoset objectForKey:@"title"] objectForKey:@"_content"];
    NSLog(@"title==%@",title);
    [photoSetNames addObject:(title.length > 0 ? title : @"Untitled")];

     NSString *primary = [photoset objectForKey:@"primary"];

    NSString *server = [photoset objectForKey:@"server"];

     NSString *secret = [photoset objectForKey:@"secret"];

    NSString *farm = [photoset objectForKey:@"farm"];

    NSString *urlstr=[NSString stringWithFormat:@"http://farm%@.staticflickr.com/%@/%@_%@.jpg",farm,server,primary,secret];

     NSLog(@"your photo id==%@",urlstr);

    [photoids addObject:urlstr];





}
}
Другие вопросы по тегам