2014-04-19 294 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

相关问题