2017-04-13 26 views
1

ユーザーがログインした後の最初のView Controllerには、ユーザーが自分のアカウントにカスタム画像をアップロードしたかどうかを確認するクイックチェックがあります。 (持っている場合は、ユーザーのプロフィールデータにURLがあります)UIImageViewはHTTPからダウンロードした画像を表示しますが、画像リソースは表示されません

これらの画像は自分のコードで正しくダウンロードされ、美しく表示されます。カスタムユーザーイメージがなく、VCが同じUIImageViewを既定のピクチャ(xcassets内)に設定しようとすると、問題が発生します。私が知る限り、画像はバンドルにロードされており、有効なPNGファイルです。

ここに画像を設定するスニペットがあります。カスタムURLが見つからない場合は、URLパラメータ文字列を「nil」に設定します。

-(void) setImageWithUrl: (NSString *) Url Imageview: (UIImageView *) image { 

if (Url.length > 4) { 
    NSURL *url = [NSURL URLWithString:Url]; 

    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *Profileimage = [UIImage imageWithData:data]; 

    [image setImage:Profileimage]; 
} 
else { 
    UIImage *Profileimage = [UIImage imageNamed:@"DefaultPicture"]; 

    [image setImage:Profileimage]; 
} 
} 

私はこのナットを運転しているので、すべての奇妙なアイデアは大歓迎です。 :-)

私があなたが考えられるコードの他の部分を投稿したいのであれば教えてください。

+0

デバッグでブレークポイントを設定しましたか?もしそうなら、フローは 'if(Url.length> 4)'で実際に失敗し、 'else'に落ちますか?もしそうなら、 'Profileimage'は' [UIImage imageNamed:@ "DefaultPicture"]; 'から有効な画像を取得しますか?どの質問に「いいえ」という回答があるのか​​を調べると、解決策を見つけることができます。 – DonMag

+0

@DonMag標準のデバッグドリルは成功しました。 Url.lengthは、データベースがユーザープロファイルに入れることがある「余計なガベージ」のために、常に4よりも大きいことが判明しました。コード内でこれを説明することで問題が解決されました。 –

答えて

0

デバッグの必要性のようです。しかし、SDWebImageのような画像ダウンロード/キャッシュライブラリを使用してみませんか? 非常に効率的で便利になるでしょう

+1

いいアイデアですが、デフォルトの画像が表示されない理由については言及していません。 (ただし、今後のリリースでこのような最適化が追加される可能性があります:これは今すぐ最初のリリース予定です) –

関連する問題