0

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

4

2 回答 2

1

我相当确定

NSLog(@"%@", data);

只是打印出NSData对象的内存地址。我想你正在寻找这样的东西:

NSString *stringData = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];

这将为您提供第一个单元格中当前行中包含的数据作为NSString.

于 2012-08-21T16:57:31.553 回答
1

“真正的 NSData”是什么意思?NSData 将始终是二进制数据,看起来与您在日志语句中使用它时发布的方式非常相似。

要再次拥有可打印的 NSString,您必须使用 [initWithData:] 函数创建一个 NSString:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
于 2012-08-21T16:17:02.887 回答