2017-07-22 18 views
1

私はUITableViewを持っていて、RSSファイルからいくつかの記事を読み込んでいます:title、url、image url。 SDWebImageライブラリを使用してUITableViewCellに画像を表示しようとしていますが、RSSからダウンロードした辞書を使用して画像をロードすると画像が読み込まれません。しかし、画像のURLは正常にロードされ、ロードの前に正確に印刷されます。しかし、私は印刷されたURLをコピーし、その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]; 

だから、私のコードのdoesntのは、私が前に同じコードで働いていたし、それが働いていたので、間違っているように見えます。上のコードでは、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()の直後に表示されるため、nilではありません。それが私がとても混乱している理由です。私はすべてのURLが正常に読み込まれたのを見ることができるからです。私が正しく理解しなかった何かをチェックしなければならない限り。 – user3882720

+0

あなたの例では、 'NSURL'ではなく' NSString'として 'urlofimage'を表示しています。 '[NSURL URLWithString:urlofimage]'を印刷して、それが 'nil'であるかどうか確認してください。 – dirtydanee

答えて

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]); 

EDIT:

エンコードは無効な文字が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エラーが発生します。だから私は動作していないと思う。そして、私が受け取ったURLはWordpressからのRSSを通して既にコード化されていると推測できます。 – user3882720

+0

これらは無効な文字なので、各URLの末尾には、 改行+タブ+改行+タブ+タブがあるようです。これらの文字はトリムする必要があります。 – dirtydanee

+0

さて、最初に受け取ったURLは正しいので、なぜですか?なぜそれが有効なので私はそれをエンコードする必要がありますか?エンコードが問題であるかどうかはわかりません。 – user3882720

関連する問題