SDWebImage不从NSDictionary加载图像

时间:2017-07-22 08:14:20

标签: ios objective-c uitableview rss

我有一个UITableView,我正在从RSS文件加载一些文章,其中包含键:title,url和image url。我正在尝试使用SDWebImage库在UITableViewCell中显示图像,当我通过从RSS下载的字典“加载”图像时,图像未加载。尽管图像的URL已成功加载并在加载之前准确打印。但是当我复制打印的网址并将其粘贴到另一个字符串中时,尝试加载该网址就可以了。以下是我的代码。

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 {

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:2)

我怀疑你的字典中有一些无效字符,比如最后的空格或类似的东西很难发现。

首先尝试对收到的字符串进行编码,然后再创建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]);