最近在写一个IOS 缓存功能时候,当写到diskCache时候,本人参考了YYDiskCache,使用了NSKeyedArchiver 归档对象到文件中,我们知道IOS 大部分系统类型都遵循了NSCoding,我在这书写diskCache 遇到一个问题就是,UIImage 对象进行归档到文件中,归档成功了,数据写到了文件中,但是用NSKeyedUnarchiver 解档的时候解档不出来,这个问题出现在哪呢?
这个问题出现必要条件:
1.图片放在了项目目录下(注意不是Assets.xcassets 目录下)
问题出现原因在:UIImage 这个类中@property(nullable,nonatomic,readonly)UIImageAsset*imageAssetNS_AVAILABLE_IOS(8_0);// The asset is not encoded along with the image. Returns nil if the image is not CGImage based. 这个属性。
怎么解决呢?
我的解决方案:
[UIImageimageWithCGImage:tempImage.CGImage]; 转换一下再用NSKeyedArchiver 进行归档就可以正常归档了