このコードを使用して、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 文字で止まらない」ため、あまり OK ではありません。