我在数据库中保存图像。我正在尝试获取图像并将其导出为CSV文件。 我使用以下代码转换为字符串,但它返回null。
int length = sqlite3_column_bytes(compiledStatement, i);
NSData *img =[NSData dataWithBytes:sqlite3_column_blob(compiledStatement, i) length:length];
text = [[NSString alloc] initWithData:img encoding:NSUTF8StringEncoding];
NSLog(@"ColName : %@, TEXT : %@",colName, text); //Text displayed is (NULL)
当我保存图像时,我将图像转换为NSData,然后将其插入数据库列。保存图像的列的数据类型为“blob”。
提前致谢。
答案 0 :(得分:2)
initWithData:encoding:
的编码参数指定了数据的编码,而不是String的编码。如果数据实际上不是UTF-8,则转换将失败,返回的字符串将为空。
看到您的数据是二进制的,几乎100%保证转换遇到无效的UTF-8字节序列并中止。
虽然我不建议将图像数据序列化为字符串,但如果你绝对必须这样做,那么你应该首先对数据进行Base-64编码,如this SO post中所述。
答案 1 :(得分:1)
也许尝试用于从数据中获取图像
[NSKeyedUnarchiver unarchiveObjectWithData:yourData]
并保存到您的数据
NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:yourObject];
我用它将图像和其他内容保存到我的核心数据中。