我在程序中使用sqlite。为了保存NSData,我使用了这个:
sqlite3_bind_blob(addStmt, 5, somedata, -1, SQLITE_TRANSIENT);
然后像这样取回:
NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 4) length:sqlite3_column_bytes(selectstmt, 4)];
但当我试图查看数据时:
NSLog(@"%@", data);
它正在返回:<84fa8801 0200>
请帮我把它转换成真正的NSData。。
我很确定
NSLog(@"%@", data);
只是打印出NSData
对象的内存地址。我想你正在寻找这样的东西:
NSString *stringData = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
这将为您提供第一个单元格中当前行中包含的数据作为NSString
。
"真正的NSData"是什么意思?NSData将始终是二进制数据,看起来与您在日志语句中使用它时发布的方式完全相同。
要再次获得可打印的NSString,必须使用[initWithData:]函数创建一个NSString:
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]