13

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

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

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

谢谢!

4

3 回答 3

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)];
于 2010-07-24T06:59:30.843 回答
5

由于 SQLite 总是返回 UTF-8* 编码的字符串,你可以只使用+stringWithUTF8String:.

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

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

于 2010-07-24T06:53:58.303 回答
1

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

Apple 的 Document的建议不是很好,因为原始方法“不会在 NULL 字符处停止”。

于 2016-08-25T09:50:37.747 回答