在之前,我们使用以下方法进行NSData与UIImage的转换
//UIImage转换为NSData NSData *imageData = UIImagePNGRepresentation(aimae);
//NSData转换为UIImage NSData *imageData = [NSData dataWithContentsOfFile: imagePath]; UIImage *image = [UIImage imageWithData: imageData];
但是我们把NSData保存到FMDB数据库里的时候,再次从数据库取出,就会报错,即使设了断点,NSData有值,也依然无法赋给UIImage使用。
解决办法是不使用SQLITE3的blob类型,而是使用系统自带的base64加密一下,然后使用string类型进行保存
NSData *imageData = [[NSData alloc] initWithData:UIImagePNGRepresentation(UImageGet)];
NSString *imageFinal = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
从数据库取出该字段,给base64解密,然后再次转为NSData类型即可给UIImage使用.
NSString *imageGet =[resultSet stringForColumn:@"modeImage"];
NSData *imgData = [[NSData alloc] initWithBase64EncodedString:imageGet options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *imageShow = [UIImage imageWithData:imgData];
网友评论