Definiertes Verhalten von Guss von unsigned char * auf char * in Objective-C
-
22-07-2019 - |
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?
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.