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

我很确定

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]

最新更新