2

我将图像保存在数据库中。我正在尝试获取图像并将其导出到 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”。

提前致谢。

4

2 回答 2

2

encoding参数initWithData:encoding:指定数据的编码是什么,而不是 String 将是什么。如果数据实际上不是 UTF-8,则转换将失败并且返回的字符串将为空。

由于您的数据是二进制的,因此几乎可以 100% 保证转换遇到无效的 UTF-8 字节序列并中止。

虽然我不建议将图像数据序列化为字符串,但如果你绝对必须这样做,那么你应该首先对数据进行 Base-64 编码,如这篇 SO post中所述。

于 2012-12-20T08:12:02.030 回答
1

也许尝试用于从数据中获取图像

[NSKeyedUnarchiver unarchiveObjectWithData:yourData]

并保存到您的数据

 NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:yourObject];

我用它来将图像和其他内容保存到我的核心数据中。

于 2012-12-20T08:11:35.417 回答