我在我的程序中使用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 ..
答案 0 :(得分:1)
“真正的NSData”是什么意思? NSData将始终是二进制数据,与您在日志语句中使用它时的发布方式非常相似。
要再次使用可打印的NSString,您可以使用[initWithData:]函数创建NSString:
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
答案 1 :(得分:1)
我很确定
NSLog(@"%@", data);
只是打印出NSData
对象的内存地址。我想你正在寻找这样的东西:
NSString *stringData = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
这将为您提供第一个单元格中当前行包含的数据NSString
。