1

unsigned char *との種類の違いがよくわかりましたchar *。また、C++ でreinterpret_cast を使用して anunsigned char *を aにキャストする方法も理解しています。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()しかし、 は an を返し、unsigned char *へのキャストの動作が気になりchar *ます。キャストは実装固有のものであると読んだことがありますが、これが Objective-C で安全なキャストなのか、それとも間違ったツリーを完全に吠えているのか疑問に思っていましたか?

4

1 に答える 1

4

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

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

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

データベースが実際に文字列を持っていることにもっと関心を持つべきだと思いますUTF-8

于 2009-08-05T20:11:17.670 に答える