2017-04-13 198 views
1

在用戶登錄後的第一個View Controller中,可以快速檢查用戶是否將自定義圖像上傳到了自己的帳戶。 (如果他有,用戶的個人資料數據中有一個URL。)UIImageView顯示來自HTTP的下載圖像,但不會顯示圖像資源

這些圖像在我的代碼中正確下載,並且它們顯示得很漂亮。問題出現在沒有自定義用戶圖像時,VC嘗試將相同的UIImageView設置爲默認圖片(在xcassets中)。據我所知,圖片被加載到包中,並且它是一個有效的PNG文件。

這是設置圖像的代碼片段。如果找不到自定義網址,我將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

這是一個不錯的主意,但它沒有解決爲什麼沒有出現默認圖像。 (但我可能會在未來的版本中添加一些這樣的優化:這只是現在應用程序的第一個計劃版本。) –