在我的应用中,每个“帖子”都有多个图像,每个图像有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"
}
}
}
}
]
我想解析每个图像并仅显示MEDIUM大小,这是我到目前为止所拥有的:
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]];
}
}
此代码仅显示每个帖子的FIRST图像(大小介质),并将其显示在UIImageView(拇指)中。
我希望以幻灯片形式显示所有图像(大小介质),并且我已经具备了该功能,除了它显示我硬编码的图像。
我想更改此代码并将其替换为显示我的图片的代码。
self.pageImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"photo1.jpg"],
[UIImage imageNamed:@"photo2.jpg"],
[UIImage imageNamed:@"photo3.jpg"],
[UIImage imageNamed:@"photo4.jpg"],
nil];
我怎样才能做到这一点?感谢。
答案 0 :(得分:0)
试试这个,假设_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];
答案 1 :(得分:0)
有一个小的转录错误,你的实际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"
}
}
}
}
]
您可以使用KVC设置操作:
NSArray *urls = [_singleRelease[@"images"] valueForKeyPath:@"@unionOfObjects.image_file.image_file.medium.url"];
如果您要过滤掉重复的网址,请添加distinct
:
... KeyPath:@"@distinctUnionOfObjects.image_file.image_file.medium.url"