Ios 分析数组中的多个嵌套对象(AFNetworking)

Ios 分析数组中的多个嵌套对象(AFNetworking),ios,json,afnetworking,Ios,Json,Afnetworking,在我的应用程序中,每个“帖子”有多个图像,每个图像有3个不同的大小 这就是我的json的外观 images: [ { image_file: { image_file: { url: "../air-jordan-v-oreo-1.jpg", thumb: { url: "../thumb_air-jordan-v-oreo-1.jpg"

在我的应用程序中,每个“帖子”有多个图像,每个图像有3个不同的大小

这就是我的json的外观

images: [
    {
        image_file: {
            image_file: {
                url: "../air-jordan-v-oreo-1.jpg",
                thumb: {
                    url: "../thumb_air-jordan-v-oreo-1.jpg"
                },
                medium: {
                    url: "../medium_air-jordan-v-oreo-1.jpg"
                }
            }
        }
        image_file: {
            image_file: {
                url: "../air-jordan-v-oreo-2.jpg",
                thumb: {
                    url: "../thumb_air-jordan-v-oreo-2.jpg"
                },
                medium: {
                    url: "../medium_air-jordan-v-oreo-2.jpg"
                }
            }
        }
    }
]
我想解析每个图像,只显示中等大小的图像,这是我目前所拥有的:

NSString *thumbURL = nil;

if ([_singleRelease[@"images"] isKindOfClass:[NSArray class]] && [_singleRelease[@"images"] count]) {
    thumbURL = _singleRelease[@"images"][0][@"image_file"][@"image_file"][@"medium"][@"url"];
    if (thumbURL)
    {
        [self.thumb setImageWithURL:[NSURL URLWithString:thumbURL]];
    }
}
此代码仅显示每篇文章的第一个图像(中等大小),并将其显示在UIImageView(thumb)中

我想以幻灯片的形式显示所有图像(中等大小),我已经有了这个功能,除了它显示我硬编码的图像

我想更改此代码,并将其替换为显示我的图像的代码

self.pageImages = [NSArray arrayWithObjects:
                   [UIImage imageNamed:@"photo1.jpg"],
                   [UIImage imageNamed:@"photo2.jpg"],
                   [UIImage imageNamed:@"photo3.jpg"],
                   [UIImage imageNamed:@"photo4.jpg"],
                   nil];

我怎样才能做到这一点?谢谢。

试试这个,假设singleRelease是一个JSON字符串

  NSArray *images = _singleRelease[@"images"];
  NSMutableArray *mediumImages = [NSMutableArray array];

  for (NSDictionary *imageDictionary in images){
      NSURL *imageURL = [NSURL URLWithString:imageDictionary[@"image_file"][@"medium"]];
      ///This should be done in a background thread
      NSData *imageData = [NSData dataWithContentsOfURL:imageURL];

      UIImage *image = [UIImage imageWithData:imageData];
      [mediumImages addObject:image];
   }

 self.pageImages = [mediumImages copy];

有一个小的转录错误,您的实际json是:

images: [
    {
        image_file: {
            image_file: {
                url: "../air-jordan-v-oreo-1.jpg",
                thumb: {
                    url: "../thumb_air-jordan-v-oreo-1.jpg"
                },
                medium: {
                    url: "../medium_air-jordan-v-oreo-1.jpg"
                }
            }
        }
    },  // <--   
    {   // <-- 
        image_file: {
            image_file: {
                url: "../air-jordan-v-oreo-2.jpg",
                thumb: {
                    url: "../thumb_air-jordan-v-oreo-2.jpg"
                },
                medium: {
                    url: "../medium_air-jordan-v-oreo-2.jpg"
                }
            }
        }
    }
]
如果要筛选出重复的URL,请添加
distinct

... KeyPath:@"@distinctUnionOfObjects.image_file.image_file.medium.url"

那么你想用中等大小的图像构建一个数组吗?从JSON解析后,
\u singleRelease
的日志是什么?是的,只有这个大小@KyleCIs\u singleRelase一个JSON字符串?或者它已经被解析了?你确定这个结构吗
@“image\u file”
图像[0]
中是一个重复的键,因此只有一个url。很抱歉,我不太清楚,\u singleRelease是一个NSDictionary,它保存了我所有的JSON。请检查更新的答案。总之,您可以循环遍历“images”数组并从每个“image\u文件”中获取中间文件字符串。然后将该中等文件字符串添加到mediumImages数组中。循环完成后,将mediumImages数组分配给self.pageImages我将部分代码更改为:NSURL*imageURL=[NSURL URLWithString:imageDictionary[@“image_file”][@“image_file”][@“medium”][@“url”];它是有效的。谢谢
... KeyPath:@"@distinctUnionOfObjects.image_file.image_file.medium.url"