在之前,我們使用以下方法進行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];