Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在集合视图上显示JSON解析_Ios_Json_Parsing_Uicollectionview - Fatal编程技术网

Ios 在集合视图上显示JSON解析

Ios 在集合视图上显示JSON解析,ios,json,parsing,uicollectionview,Ios,Json,Parsing,Uicollectionview,我试图显示从Web服务解析的图像,但我的图像不显示。我意识到在视图加载后,图像被添加到数组中。那么,Hhw我可以在集合视图上显示图像吗?更好的是,哪一行代码应该在主线程之外执行,以便加载图像?谢谢你的帮助 #import "ShowImagesCollectionViewController.h" #import "ImageCell.h" @interface ShowImagesCollectionViewController (){ NSMutableArray *arra

我试图显示从Web服务解析的图像,但我的图像不显示。我意识到在视图加载后,图像被添加到数组中。那么,Hhw我可以在集合视图上显示图像吗?更好的是,哪一行代码应该在主线程之外执行,以便加载图像?谢谢你的帮助

#import "ShowImagesCollectionViewController.h"
#import "ImageCell.h"
@interface ShowImagesCollectionViewController (){
        NSMutableArray *array;
}

@property(nonatomic, strong)NSURLConnection *connection;
@property(nonatomic, strong)NSMutableData *webdata;
@end

@implementation ShowImagesCollectionViewController

- (void)viewDidLoad
      {
      [super viewDidLoad];
      [self getData];
      array = [[NSMutableArray alloc]initWith];
      [_collectionView reloadData];
       }



 -(void)getData
       {
       [_activyIndicator startAnimating];
        NSURL *url = [NSURL URLWithString:@"WEBSITE"];
       NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];

       _connection = [NSURLConnection connectionWithRequest:requestURL delegate:self];
        if (_connection) {
       _webdata = [[NSMutableData alloc]init];
       }

        }
连接

   -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
        {
        [_webdata setLength:0];
        }
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
         {
        [_webdata appendData:data];

          }

    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
        {
         NSLog(@"Fail With error");
         }
        -(void)connectionDidFinishLoading:(NSURLConnection *)connection
         {
            [_activyIndicator startAnimating];
           NSDictionary *allDataDictionary =[NSJSONSerialization JSONObjectWithData:_webdata   options:kNilOptions  error:nil];
           NSDictionary *currentShowDictionary = [allDataDictionary objectForKey:@"Current_Show"];

            NSArray *photoArray =[currentShowDictionary objectForKey:@"Photos"];
            for (NSDictionary *diction in photoArray) {
            NSDictionary *photo_urlDictionary = [diction objectForKey:@"photo_url"];
           // NSLog(@"%@",photo_urlDictionary);
           NSURL *collectionURL = [NSURL URLWithString:[photo_urlDictionary objectForKey:@"url"]];




            NSData *colectionImageData = [NSData dataWithContentsOfURL:collectionURL];

            UIImage *collectionImage = [UIImage imageWithData:colectionImageData];
            [array addObject:collectionImage]; 
            NSLog(@"%@",array);


             }

            [_activyIndicator stopAnimating];

             }
收藏视图

 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
              return 1;
          }
         -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
                {
                return [array count];
                 }
        -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
          {
                    ImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"pictureCell" forIndexPath:indexPath];
                    NSString *myImageString = [array objectAtIndex:indexPath.row];
                    cell.pictureImageView.image = [UIImage imageNamed:myImageString];

                    return cell;
          }

当视图加载时,您正在调用
[\u collectionView reloadData]
,但当图像的异步加载完成时,不会再次调用。如果您在
-(void)connectiondFinishLoading:(NSURLConnection*)连接的末尾进行此调用,则应该可以执行此操作。

您是否尝试在-(void)connectiondFinishLoading:(NSURLConnection*)连接的末尾调用[\u collectionView reloadData]。就这样!谢谢,很高兴它成功了!我把它放在了答案栏,因为看起来你们都准备好了。