我使用此代码从 sqlite 数据库中读取数据:
keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)];
但是编译器给了我标题中写的警告......那么,从sqlite中检索值的正确且不被弃用的方法是什么?
谢谢!
我使用此代码从 sqlite 数据库中读取数据:
keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)];
但是编译器给了我标题中写的警告......那么,从sqlite中检索值的正确且不被弃用的方法是什么?
谢谢!
+(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)];
由于 SQLite 总是返回 UTF-8* 编码的字符串,你可以只使用+stringWithUTF8String:
.
const char* res = (const char*)sqlite3_column_text(preparedStatement, 1);
keyFromSql = [NSString stringWithUTF8String:res];
(* 或 UTF-16,如果您使用sqlite3_column_text16
)
[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding]
优先于stringWithCString:encoding:
Apple 的 Document的建议不是很好,因为原始方法“不会在 NULL 字符处停止”。