如何存储从服务器到缓存的类型字符串?

时间:2012-07-30 09:06:54

标签: iphone ios ipad

我有一个 Iphone应用程序,其中我将来自服务器的图标图像显示为每种类别的类别作为单元格images.i希望它从我的图像缓存中加载。我想要它在图像缓存中存储该类型的图像,并且下次该类型即将到来时,它可以直接从缓存加载。因此,如果该类型图像存在,则需要从本地加载。其他明智的需要存储和然后显示。我的问题是如何在图像缓存中存储与该类型相对应的图像,以及下次我如何检查它。可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

使用缓存有几种技术。一些是我使用的以下。

1 - EGOCache

2 - SDWebImage

答案 1 :(得分:0)

您可以尝试这样:(对于相应的图像,您需要保存图像名称 - 例如 - nsuser默认值):

- (void) makeCache: (NSString *)name
{
       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *imagePath = [paths objectAtIndex: 0];  

   // create screen dump of the view of this view controller
   NSString *fileName = [NSString stringWithFormat:@"%@", name];
   NSString *filePath = [NSString stringWithFormat: @"%@/%@.jpg", imagePath, fileName];

   NSData *imageBytes = UIImageJPEGRepresentation(myImageIcon.image, .9);  // myImageIcon.image - uiimageview



   BOOL saved = [imageBytes writeToFile: filePath atomically: YES];
   if (!saved)
       {
    NSLog(@"error! can't save image at path: %@", filePath);
   }

}

然后实施:

    - (NSString *) searchFile: (NSString *) fileName
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *imagePath = [paths objectAtIndex: 0];

    NSString *filePath = [NSString stringWithFormat: @"%@/%@", imagePath, fileName];

    if ([[NSFileManager defaultManager] fileExistsAtPath: filePath])
        {
        return filePath;
    }
    else 
        {
    return nil;
    }

}

您也可以为png图像执行此操作。祝你好运!