2010-07-24 15 views
13

अब मान्य नहीं है मैं इस कोड का उपयोग SQLite डेटाबेस से डेटा को पढ़ने के लिए:iPhone stringWithCString

keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)]; 

लेकिन संकलक मुझे दे चेतावनी शीर्षक में लिखा है ... इसलिए, क्या सही है और करने के लिए विधि अब मान्य नहीं sqlite से एक मूल्य पुनर्प्राप्त करें?

धन्यवाद!

उत्तर

26
+(id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc 

मुझे लगता है कि आप आमतौर पर NSUTF8StringEncoding इस्तेमाल करेंगे, तो आपके कोड कैसा दिखेगा

keyFromSq1 = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1) encoding:NSUTF8StringEncoding]; 

वैकल्पिक रूप से आप

keyFromSq1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(preparedStatement, 1)]; 
का उपयोग कर सकते हैं
+0

'[[एनएसएसटींग आवंटन] initWithBytes: बाइट्स लंबाई: गिनती एन्कोडिंग: NSUTF8StringEncoding] बेहतर है, अगर आप https://developer.apple.com/reference/foundation/nsstring/1497290-stringwithcstring पर ऐप्पल के दस्तावेज़ के बारे में सावधानी से सोचते हैं तो बेहतर है ? भाषा = ObjC –

5

चूंकि SQLite हमेशा यूटीएफ -8 * एन्कोडेड स्ट्रिंग, you could just use +stringWithUTF8String: लौटाता है।

const char* res = (const char*)sqlite3_column_text(preparedStatement, 1); 
keyFromSql = [NSString stringWithUTF8String:res]; 

(* या UTF-16, यदि आप sqlite3_column_text16 का उपयोग)

1

[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding] stringWithCString:encoding:

Apple's Document की सिफारिश करने के लिए पसंद किया जाता है क्योंकि मूल विधि "एक शून्य चरित्र पर कम नहीं रूकती है।", बहुत ठीक नहीं है