2013-12-18 30 views
0

我需要幫助,我有一個應用程序,收集我的個人資料圖片Facebook,問題是,如果我改變這個個人資料圖片在Facebook上,然後去我的應用程序,我仍然顯示舊圖像,但服務返回給我更好的網址與更新的圖像,這可能會發生?uimageview不會刷新我從一個URL

if ([session sessionType] == MASTFacebook) { 
     NSLog (@ "fbPictureURL:% @", [(MAFacebookSession *) session fbPictureURL]); 

     [self.userImgView setImageWithURL [(MAFacebookSession *) session fbPictureURL]]; 

    } 

enter image description here

+0

你緩存圖像嗎? –

回答

0

因爲你正在緩存圖像,請儘量使用像setImageWithURLRequestNSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:-1];和使用方法設置你的UIImageView。

在你的情況下,代碼應該像如下,如果你正在使用UIImageView+AFNetworking

if ([session sessionType] == MASTFacebook) { 
    NSLog (@ "fbPictureURL:% @", [(MAFacebookSession *) session fbPictureURL]); 
    NSURL *url = [(MAFacebookSession *) session fbPictureURL]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:-1]; 

    // if you are using UIImageView+AFNetworking. the method is as follows 
    [self.userImgView setImageWithURLRequest:request placeholderImage:nil success:nil failure:nil]]; 

} 
+0

我不重新使用setImageWithURLRequest – user2652032

+0

@ user2652032這個方法,它只是一個像這樣的方法。爲什麼UIImageView類是你使用的? – chancyWu

+0

@ user2652032你也可以深入你的'setImageWithURL:'方法來找到一個看起來像'setImageWithURLRequest'的方法,它使用請求作爲參數。 – chancyWu

0

由於您使用setImageWithURL所以它會通過網址自動緩存圖像,所以你也應該更新後更新圖片的網址圖片。

+0

但我有不同的圖片相同的網址,每次調用相同的網址應提供新的圖像。如何使用-setImageWithURLRequest方法清除緩存? – evya

0

最好的辦法是一旦你從Facebook的圖像URL轉換成UIImage並保存它。取決於您的要求(應用程序委託,UserDefaults)。然後將其分配給ImageView。因此,您可以在任何視圖控制器中使用圖像,因爲您的配置文件圖片已經轉換成圖像,它不需要時間來轉換(不緩存,但作爲緩存)。當你登錄你可以得到更新的個人資料圖片。 例如:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; 

    [defaults setObject:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"your image url" forKey:@"profileImage"]; 

在這裏,您可以在保存數據(UserDefaults我們無法儲存圖片,所以我們保存數據)。 UIImageView * view = [[UIImageView alloc] initWithData:[defaults objectForKey:@「profileImage」]];;};}};