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 {
任何想法?谢谢。
我会怀疑你的字典中有一些无效的字符,比如末尾的空格或类似的东西很难找到。
尝试先编码您接收到的字符串,然后再创建您的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]);
此编码在字符串的末尾添加以下字符:%0A%09%0A%09%09。这会产生一个404错误。所以我认为不起作用。我可以猜测,我收到的网址已经通过Wordpress中的RSS进行了编码。 – user3882720
这些是无效字符,因此您似乎有: 换行符+制表符+换行符+制表符+制表符在每个URL的末尾。这些字符应该修剪。 – dirtydanee
好的,但为什么我在开始时收到的网址是正确的?为什么我应该编码它,因为它是有效的?我不确定编码是否是问题。 – user3882720
你检查过'[NSURL URLWithString:urlofimage]'是不是'nil'吗? – dirtydanee
是的,它不是零,因为所有的url都直接打印在NSLog()中。这就是为什么我很困惑。因为我可以看到所有成功加载的网址。除非我必须检查一些我没有正确理解的东西。 – user3882720
在你的例子中,你将'urlofimage'打印为'NSString',而不是'NSURL'。尝试打印'[NSURL URLWithString:urlofimage]'并查看它是否为'nil'。 – dirtydanee