Frage

Ich verstehe den Unterschied zwischen unsigned char * und char * Typen. Ich verstehe auch, wie reinterpret_cast verwenden, um eine unsigned char * zu einem char * in C ++ zu werfen.

Ich benutze sqlite3 in Objective-C und ich versuche, eine NSString von einem Aufruf zu erhalten,

sqlite3_column_text(...);

Um dies zu tun, ich bin im Grunde tun:

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

sqlite3_column_text() jedoch gibt eine unsigned char * und ich mache mir Sorgen über das Verhalten des Darstellers zu char *. Ich habe gelesen, dass die Besetzung ist Implemenation spezifisch und ich frage mich, ob dies eine sichere Besetzung in Objective-C ist oder wenn ich total bin auf den Holzweg up?

War es hilfreich?

Lösung

Sie haben nicht viel über wegen der Besetzung zu kümmern. Eigentlich Code Apple-Beispiel verwendet die exakt gleiche Codemuster Sie verwenden:

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

(Von SQLite Book List Book.m Klasse).

Ich denke, man sollte sich mehr Gedanken mit der Datenbank tatsächlich UTF-8 Saiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top