2012-12-20 98 views
2

我将数据保存在数据库中。我正在尝试获取图像并将其导出到CSV文件中。 我使用下面的代码转换成字符串,但它返回null。错误将NSData转换为NSString

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”。

在此先感谢。

回答

1

也许尝试从数据

[NSKeyedUnarchiver unarchiveObjectWithData:yourData] 

使用取图像,并保存到数据

NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:yourObject]; 

我用它来保存图片和其他内容,我的核心数据。

2

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

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

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