如何使用SDWebImage将图像从JSON加载到UIImageView中?

时间:2014-07-27 19:47:21

标签: ios objective-c json uiimageview sdwebimage

我正在尝试使用SDWebImage在UIImageView中显示来自JSON url的图像,类似于Tinder。我遇到的每个教程只处理下载单个图像网址(@“suchandsuch.png”),或者在tableviews中显示图像(我不想这样做)。

不确定我做错了什么。

我的示例代码:ViewController.m

-(void)viewDidLoad{

    [super viewDidLoad];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
   [manager GET:@"http://www.suchandsuch.com/api/sites" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        self.posts = (NSDictionary *) responseObject;
        self.post = self.posts[@"sites"];
       NSLog(@"JSON: %@", self.post);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
       NSLog(@"Error: %@", error);
    }];


    NSData *data = [[NSData alloc] initWithContentsOfURL:
                              [NSURL URLWithString:@"http://www.suchandsuch.com/api/sites"]];


    NSError *error;
    NSDictionary *jsonDict = [NSJSONSerialization
                                JSONObjectWithData:data
                                options:kNilOptions
                                error:&error];

    NSString *logoString = [jsonDict objectForKey:@"logoURL"];

    NSURL *logoURL = [NSURL URLWithString:logoString];
    [self.myImage setImageWithURL:logoURL];


    }

2 个答案:

答案 0 :(得分:2)

我认为你已经将SDWebImage文件添加到项目中,并且知道如何解析JSON,这就是你需要做的所有事情。将此行添加到视图控制器类的顶部 -

#import "UIImageView+Webcache.h

在您解析并检索后,对象包含您需要的imageUrl,例如从JSON中提取的字典(dict)

实施例

    NSString *jsonImageUrlString = [dict objectForKey:@"imageUrl"];

    NSURL *imageURL = [NSURL URLWithString:jsonImageUrlString];

    [[SDImageCache sharedImageCache] removeImageForKey:imageURL fromDisk:YES];

    [self.profileImageView setImageWithURL:imageURL];

我希望这会有所帮助

修改 您应该已在项目中使用的 SDWebImage文件

enter image description here

答案 1 :(得分:1)

假设您有一个JSON结构,其中包含imageUrl的字典。您需要通过此代码段将JSON转换为NSObject。

NSError *error;
NSDictionary*jsonDictionary = [NSJSONSerialization JSONObjectWithData:jsonData    options:kNilOptions error:&error];

NSString *imageUrl = [jsonDictionary objectForKey:@"imageURLKEY"];

[yourImageView sd_setImageWithURL:[NSURL URLWithString: imageUrl] placeholderImage:[UIImage imageNamed:@"anyTempImage.png"]];