我使用此代码读取SQLite数据库的数据:iPhone stringWithCString已过时
keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)];
但是编译器给我的警告,在标题写的...所以,什么是正确的,而不是过时的方法从sqlite检索值?
谢谢!
我使用此代码读取SQLite数据库的数据:iPhone stringWithCString已过时
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 *编码的字符串,所以you could just use +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's Document的建议是不是很确定,因为原来的方法‘不以NULL字符短停下来。’
'[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding]'更好,如果您仔细考虑Apple的文档,请访问https://developer.apple.com/reference/foundation/nsstring/1497290-stringwithcstring ?语言= objc – 2016-08-25 11:45:54