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