【问题标题】:Getting image from my dictionary is causing an "unrecognized selector" error从我的字典中获取图像导致“无法识别的选择器”错误
【发布时间】:2016-08-30 18:14:32
【问题描述】:

我在 iOS 中解析 JSON 文件,并在 tableview 中获取元素,但是当我创建 (prepareForSegue) 以获取 tableview 元素时,我无法获取图像并且出现此错误:

无法识别的选择器发送到实例 0x7fa3427c5b20 2016-05-05 05:08:43.287 MovieClub[4845:212195] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFString 大小]:发送了无法识别的选择器到实例 0x7fa3427c5b20'

在这行代码中:

self.postt.image =[self.actuatlitDetail objectForKey:@"poster_240x342"];

【问题讨论】:

  • poster_240x342 是什么,是图片名称还是网址?
  • 请分享更多代码,以便我们为您提供帮助。
  • 目标c不接受
  • 任何其他解决方案
  • .m self.prepTimeLabel.text = [self.actuatlitDetail objectForKey:@"original_title"]; self.postt.imageWithName =[self.actuatlitDetail objectForKey:@"poster_240x342"];

标签: ios objective-c json uitableview unrecognized-selector


【解决方案1】:

actuatlitDetail的url值,获取如下代码,

NSString *imageurl = [self.actuatlitDetail objectForKey:@"poster_240x342"];
NSString *encodedUrlString = [imageurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *imageURL = [NSURL URLWithString: encodedUrlString];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *imag = [UIImage imageWithData:imageData];
self.postt.image = imag;

希望对你有帮助

【讨论】:

  • 它是一个远程图像 url。您必须从 imageUrl 获取 ImageData,然后使用 imageData 设置图像
  • 你能把代码行录下来吗@MuhammadAdnan
  • [self.actuatlitDetail objectForKey:@"poster_240x342"] 这个值获取字符串还是url格式?
【解决方案2】:

如果 [self.actuatlitDetail objectForKey:@"poster_240x342"] 返回 NSURL 你可以使用

NSURL *imageURL = [self.actuatlitDetail objectForKey:@"poster_240x342"];
self.postt.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]];

如果是 NSString 则表示 URL 则

NSString *imageURLString = [self.actuatlitDetail objectForKey:@"poster_240x342"];
self.postt.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURLString]]];

你可以在后台加载图片

__weak typeof(self) weakSelf = self;
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(aQueue, ^{
    NSURL *imageURL = [weakSelf.actuatlitDetail objectForKey:@"poster_240x342"];
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]];
    dispatch_async(dispatch_get_main_queue(), ^{
        weakSelf.postt.image = image;
    });
});

【讨论】:

    【解决方案3】:

    设置图像路径然后按照这个:

    NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"Your image url string"]];
    UIImageView *imView = [[UIImageView alloc] initWithImage:[UIImage imageWithData: imageData]];
    

    【讨论】:

    • 检查您的网址数据
    • 如果 Url 没有存储您的图像数据,则出现此类错误
    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多