Sta*_*ros 2 iphone cocoa-touch nsuserdefaults uiimage
我过去几个月一直在开发iPhone应用程序.最近我想提升性能并缓存UI中使用的一些图像.用户从网上随机下载图像,因此我无法将特定图像添加到项目中.我也已经在使用NSUserDefaults来保存应用程序中的其他信息.
所以现在我试图将UIImages的字典保存到我的NSUserDefaults对象中并得到...
- [UIImage encodeWithCoder:]:发送到实例的无法识别的选择器
然后我决定使用名为UISaveableImage的类继承UIImage并实现NSCoding.所以现在我......
@implementation UISaveableImage
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:super forKey:@"image"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
if (self=[super init]){
super = [decoder decodeObjectForKey:@"image"];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
这并不比我开始时更好.如果我能够将UIImage转换为NSData我会很好,但我能找到的功能就像UIImagePNGRepresentation,它要求我知道这是什么类型的图像.UIImage不允许我做的事情.思考?我觉得我可能走错了路......
您不希望在NSUserDefaults中存储图像.它们是大量数据,NSUserDefaults存储为plist; 你想写一小部分信息.
您应该将映像写入磁盘,然后将文件名存储为默认值:
NSString *filename = myImageFilename;
[UIImagePNGRepresentation(image) writeToFile: myImageFilename atomically];
[[NSUserDefaults standardDefaults] setObject: myImageFilename forKey: @"lastImageFilename"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |