我使用这段代码从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];
(如果您使用sqlite3_column_text16
),则为UTF-8或UTF-16。
[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding]
比stringWithCString:encoding:
更受推荐。
苹果文档的建议并不是很好,因为原始方法“不会在空字符处停止”。