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 文字で止まらない」ため、あまり OK ではありません。

于 2016-08-25T09:50:37.747 に答える