SDWebImage不从NSDictionary加载图像

问题描述:

我有一个UITableView,我从一个RSS文件加载一些文章与键:标题,网址和图像的网址。我试图使用SDWebImage库在UITableViewCell中显示图像,当我通过从RSS下载的字典“加载”图像时,图像未加载。图像的url虽然已成功加载并在加载之前正好打印出来。但是,当我复制打印的网址,并将其粘贴到另一个字符串中,试图加载该网址它的作品。以下是我的代码。SDWebImage不从NSDictionary加载图像

NSString *urlofimage = [[feeds objectAtIndex:indexPath.row] objectForKey: @"image"]; 

NSLog(@"%@", urlofimage); 

NSString *urlofimage1 = @"https://www.radioevros.gr/wp-content/uploads/2017/05/1495542572-74c82f60669c9db27cad113d22379c72.jpg"; 

[cell.imageview sd_setImageWithURL:[NSURL URLWithString:urlofimage] placeholderImage:[UIImage imageNamed:@"radio.png"] 
            options:SDWebImageRefreshCached]; 

所以,我的代码似乎没有错,因为我用同样的代码之前工作,这是工作。在上面的代码中,urlofimage1实际上是urlofimage的打印url。如果我这样做:

[cell.imageview sd_setImageWithURL:[NSURL URLWithString:urlofimage1] placeholderImage:[UIImage imageNamed:@"radio.png"] 
            options:SDWebImageRefreshCached]; 

正在工作,但如果我这样做不是。

[cell.imageview sd_setImageWithURL:[NSURL URLWithString:urlofimage] placeholderImage:[UIImage imageNamed:@"radio.png"] 
            options:SDWebImageRefreshCached]; 

这里面装:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

任何想法?谢谢。

+0

你检查过'[NSURL URLWithString:urlofimage]'是不是'nil'吗? – dirtydanee

+0

是的,它不是零,因为所有的url都直接打印在NSLog()中。这就是为什么我很困惑。因为我可以看到所有成功加载的网址。除非我必须检查一些我没有正确理解的东西。 – user3882720

+0

在你的例子中,你将'urlofimage'打印为'NSString',而不是'NSURL'。尝试打印'[NSURL URLWithString:urlofimage]'并查看它是否为'nil'。 – dirtydanee

我会怀疑你的字典中有一些无效的字符,比如末尾的空格或类似的东西很难找到。

尝试先编码您接收到的字符串,然后再创建您的NSURL实例。

NSString *urlofimage = @"https://www.radioevros.gr/wp-content/uploads/2017/05/1495542572-74c82f60669c9db27cad113d22379c72.jpg "; 
NSCharacterSet *set = [NSCharacterSet URLQueryAllowedCharacterSet]; 
NSString *endcodedString = [urlofimage stringByAddingPercentEncodingWithAllowedCharacters:set]; 
NSLog(@"%@", [NSURL URLWithString:endcodedString]); 

编辑:

编码高亮显示,存在在URL的结尾无效字符。让我们用下面的代码去除它们:

NSString * urlofimage = @"https://www.radioevros.gr/wp-content/uploads/2017/05/1495542572-74c82f60669c9db27cad113d22379c72.jpg "; 
NSString *trimmedString = [urlofimage stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
NSLog(@"%@", [NSURL URLWithString:trimmedString]); 
+0

此编码在字符串的末尾添加以下字符:%0A%09%0A%09%09。这会产生一个404错误。所以我认为不起作用。我可以猜测,我收到的网址已经通过Wordpress中的RSS进行了编码。 – user3882720

+0

这些是无效字符,因此您似乎有: 换行符+制表符+换行符+制表符+制表符在每个URL的末尾。这些字符应该修剪。 – dirtydanee

+0

好的,但为什么我在开始时收到的网址是正确的?为什么我应该编码它,因为它是有效的?我不确定编码是否是问题。 – user3882720