質問

unsigned char * char * のタイプの違いを理解しています。 reinterpret_castを使用して、C ++で unsigned char * char * にキャストする方法も理解しています。

Objective-Cでsqlite3を使用していますが、

の呼び出しから NSString を取得しようとしています
sqlite3_column_text(...);

これを行うには、基本的に次のようにします。

char *cParam = (char *)sqlite3_column_text(compiledStatementPtr, 0);
NSString *aParam = nil;
if (cParam) {
    aParam = [NSString stringWithUTF8String:cParam];
}
ただし、

sqlite3_column_text() unsigned char * を返すため、 char * へのキャストの動作が心配です。キャストは実装固有のものであり、Objective-Cで安全なキャストなのか、間違ったツリーを完全にbarえているのか疑問に思っていました。

役に立ちましたか?

解決

キャストのために心配する必要はあまりありません。実際、Appleのサンプルコードは、使用しているコードパターンとまったく同じものを使用しています。

self.title =
  [NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];

SQLite Book List Book.m クラスから)。

UTF-8 文字列を実際に持っているデータベースにもっと注意すべきだと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top