2012-06-18 48 views

回答

3

用途:

const char* sqlStatementC = [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding]; 

const char* sqlStatementC = [sqlStatement UTF8String]; 
+0

感謝您的幫助。 – PruitIgoe

+0

從SO準則:「[...]你應該接受最好的答案**,或者如果有相同的答案,第一個**」 – 2012-06-18 13:40:06

+1

是的,標記@ H2CO3的答案被接受...... – graver

9

因爲這是絕對無效的。 sqlStatement是一個NSString,一個Objective-C對象。你不能簡單地將它投射到const char *。你必須使用一種方法來訪問它的內容作爲C srting:

const char *sqlStatementC = [sqlStatement UTF8String]; 

備註1:順便說一下,這是完全無關ARC。備註2:使用指針標記星號粘貼變量名稱,而不是類型名稱(即const char* sqlStatementC不是很好,const char *sqlStatementC更好)。

+0

備註2:這是完全主觀的。 – PruitIgoe

+0

@Pruitlgoe:可能是這樣,但是有這樣一個原因。 – 2012-08-13 14:07:24

+0

只有當你在同一行聲明瞭多個變量時,我不喜歡這樣做的編碼風格。否則,編譯器將空白視爲不相關。另外,在編寫一個方法時,比如說 - (NSString *)myMethod:(NSString *)aString,你會注意到指針引用是用類名而不是變量。對我來說,這是一個非常好的說法,指針應該比變量名更接近類名。但是這是爭論一個有爭議的問題,因爲我們都同意這是一種風格偏好。 – PruitIgoe

相關問題