使用 AFNetworking3 目标 c 显示来自 json 数据的图像

Posted

技术标签:

【中文标题】使用 AFNetworking3 目标 c 显示来自 json 数据的图像【英文标题】:display an image from json data using AFNetworking3 objective c 【发布时间】:2017-07-02 13:06:18 【问题描述】:

我想, 我使用了这段代码,但它崩溃了!

这是我儿子的链接: mkssab.com/api/index

这是我的代码:

NSDictionary *images = data[@"images"];

cell.adPic.image=[图像 valueForKey:@"photo"];

崩溃消息:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSArrayI size]: unrecognized selector sent to instance 0x6000001a5cc0”

【问题讨论】:

从错误消息中猜测(并使用您的 JSON 验证)[images valueForKey:@"photo"] 不是 UIImage 对象,它是 NSArray 对象。此外,您可能想要下载 UIImage,但此处并非如此。所以要么通过构造 URL(似乎只是一个图像名称)并调用setImageWithURL: @Larme 你能帮我提供代码示例吗? 【参考方案1】:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) 

    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];



NSString *urlString = @"https://mkssab.com/uploads/file-1499084006-595a34e63e885.PNG";// example:http://mkssab.com/somePic.jpg
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
if (data) 
    UIImage *image = [UIImage imageWithData:data];
    cell.imageView.image = image;

但是NSData *data = [NSData dataWithContentsOfURL:url];会阻塞主线程,也许你可以尝试使用SDWebImage 像这样:

[cell.adPic sd_setImageWithURL:[NSURL URLWithString:@"http://mkssab.com/somePic.jpg"]

【讨论】:

@ibtdiibtdi [图像 valueForKey:@"photo"];网址无效 对不起,我不明白你能解释一下吗? @ibtdiibtdi 检查你的图片网址 @ibtdiibtd 我正在更新我的答案,我确信可以工作,也许你应该将“https://”附加到你的 imageURL

以上是关于使用 AFNetworking3 目标 c 显示来自 json 数据的图像的主要内容,如果未能解决你的问题,请参考以下文章

AFNetWorking3.0 处理请求头 和 请求内容

AFNetworking 3.0 setImageWithURLRequest 下载进度

AFNetworking3.0检查网络网络状态

基于AFNetworking3.0网络封装

IOS 网络浅析-(十一 三方 AFNetworking3.0简介)

AFNetworking3.2.1 Post请求通过httpbody传参