2014-04-19 291 views
0

是否有可能從Facebook個人資料圖片檢索圖片文件的名稱?返回Facebook的個人資料圖片

我想要做的是:當用戶登錄時,我將檢索用戶的個人資料圖片,然後將其保存在文件中。但是,我想要經常檢查用戶是否更新了Facebook上的圖片,如果是,請將其保存在文件中。

是否有可能獲得文件的名稱,因此我可以比較它們?

這裏是我用它來下載圖片代碼:

NSString *urlString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?width=100&height=100",[[PFUser currentUser] objectForKey:@"fbId"]];     
    NSURL *url = [NSURL URLWithString:urlString]; 
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 

    AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; 
    requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 

    [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){ 
     profilePicture = [UIImage imageWithData: operation.responseData]; 
     NSDictionary<FBGraphUser> *me = (NSDictionary<FBGraphUser> *)responseObject; 
     NSLog(@"ResponseObject %@", me.username); 
     NSLog(@"Profile Image %@",profilePicture); 
     [self saveImageOnDisk:profilePicture]; 
}]; 

回答

1

你不應該需要做的要麼。再次請求。 URL加載子系統將檢查它的緩存版本併發送Facebook If-Modified-Since(條件GET)請求來檢查更新的版本。你不需要做任何特別的事情,系統爲你做這件事。如果有更新的數據可用,它會得到它,否則它將使用它已經緩存的數據。

URL Loading System: Understanding Cache Access

RFC2616: HTTP Caching

+0

所以......我甚而不需要保存在磁盤上?事情是,我有一個UINavigationController中的多個視圖。如果我每次都要求顯示圖像,則會延遲顯示。不是嗎? – Camus

+0

如果Facebook表示,該圖像是有效的,比方說,2小時,並且不需要重新驗證,會出現完全沒有延遲。系統的緩存將在沒有網絡訪問的情況下給您。如果Facebook表示應該重新驗證,系統將執行條件獲取。 – quellish

+0

我試過了,看起來確實非常快。我正在使用基於NSURL類的「AFNetworking」。有什麼方法可以檢查數據是來自緩存還是請求?問候 – Camus

相關問題