Ios 分析数组中的多个嵌套对象(AFNetworking)
在我的应用程序中,每个“帖子”有多个图像,每个图像有3个不同的大小 这就是我的json的外观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"
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"