0

我有一个Iphone 应用程序,在该应用程序中,我将来自服务器的每种类别的图标图像显示为单元图像。我希望它从我的图像缓存中加载。我希望它将该类型的图像存储在图像缓存中,下次该类型到来时,可以直接从缓存中加载。因此,如果存在该类型的图像,则需要从本地加载。否则需要存储然后显示。我的问题是如何存储该图像对应于图像缓存中的该类型,以及我下次如何检查它。有人可以帮我吗?

4

2 回答 2

1

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

1-自我缓存

2- SDWebImage

于 2012-07-30T09:21:25.410 回答
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 图像执行此操作。祝你好运!

于 2012-07-30T09:18:43.910 回答