0

画像をダウンロードして、UIImageView で表示しています。このアプローチを使用すると、ビューが読み込まれるたびに画像がダウンロードされます。不要なサーバー要求を避けるために、ローカルに保存するにはどうすればよいですか?

   [self requestData ] ;
   UIImage *userImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:userProfileImageUrl ]]] ;
   [self.profileImageView  setImage:userImage ] ;
4

4 に答える 4

0

このメソッドを試して、UIImage をローカル ディレクトリに保存します。

- (void)addImage:(UIImage *)image toCacheWithIdentifier:(NSString *)identifier {

    NSString *folderPath = @"LOCAL DIRECTORY PATH ";
    if(![[NSFileManager defaultManager] fileExistsAtPath:folderPath isDirectory:nil]) 
    {

        [[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:nil];
    }

   NSString *fileName = [NSString stringWithFormat:@"%@.png",identifier];
   fileName = [folderPath stringByAppendingPathComponent:fileName];
   NSData *imageData = UIImagePNGRepresentation(image);
   [imageData writeToFile:fileName atomically:YES];
}

ローカル ディレクトリから画像を取得するには、この方法を試してください...

- (UIImage *)imageFromCacheWithIdentifier:(NSString *)identifier 
{
     NSString *folderPath = @"LOCAL DIRECTORY PATH ";
     NSString *fileName = [NSString stringWithFormat:@"%@.png",identifier];
     fileName = [folderPath stringByAppendingPathComponent:fileName];

     if([UIImage imageWithContentsOfFile:fileName]) 
     {
         return [UIImage imageWithContentsOfFile:fileName];
     }
     return nil;
 }
于 2013-11-11T12:19:16.403 に答える
0

もう1つの実行可能なアプローチは、公式ドキュメントで利用することです(キャッシュアクセスNSURLCacheについても参照してください)。

HTTP キャッシュはまさにこの要件のために考案されました: RFC 2616の HTTP でのキャッシング。

残念ながら、HTTP キャッシングは高度なトピックであり、 の正確な動作NSURLCacheは非常にあいまいです。

于 2013-11-11T13:57:09.893 に答える