iPhone stringWithCString已弃用

ghi*_*boz 13 sqlite string iphone cstring deprecated

我使用此代码从sqlite数据库中读取数据:

keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)];
Run Code Online (Sandbox Code Playgroud)

但是编译器给了我在标题中写的警告......那么,从sqlite中检索值的正确而不是弃用的方法是什么?

谢谢!

小智 26

+(id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc
Run Code Online (Sandbox Code Playgroud)

我想你通常会使用NSUTF8StringEncoding,所以你的代码看起来像

keyFromSq1 = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1) encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

keyFromSq1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(preparedStatement, 1)];
Run Code Online (Sandbox Code Playgroud)


ken*_*ytm 5

由于SQLite始终返回UTF-8*编码的字符串,您可以使用+stringWithUTF8String:.

const char* res = (const char*)sqlite3_column_text(preparedStatement, 1);
keyFromSql = [NSString stringWithUTF8String:res];
Run Code Online (Sandbox Code Playgroud)

(*或UTF-16,如果您使用sqlite3_column_text16)