Objective-Cのunsigned char *からchar *へのキャストの動作を定義
-
22-07-2019 - |
質問
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
文字列を実際に持っているデータベースにもっと注意すべきだと思います。
所属していません StackOverflow