SQLite保存NSData并将其取回

时间:2012-08-21 16:07:46

标签: ios iphone sqlite nsdata

我在我的程序中使用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 ..

2 个答案:

答案 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