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 に答える