私はこれを持っています:
// Setup the SQL Statement and compile it for faster access
NSString *sqlStatement = @"SELECT * FROM nameList";
const char *sqlStatementC = (const char* )sqlStatement;
しかし、ARCはこれを好みません。回避策はありますか?
ありがとう
これは絶対に無効だからです。sqlStatementはNSString
、Objective-Cオブジェクトです。単純ににキャストすることはできませんconst char *
。C srtingとしてそのコンテンツにアクセスするには、メソッドを使用する必要があります。
const char *sqlStatementC = [sqlStatement UTF8String];
備考1:ちなみに、これはARCとは全く関係ありません。
備考2:タイプ名ではなく、変数名に付けられたポインターマーカーのアスタリスクを使用します(つまりconst char* sqlStatementC
、あまり良くない、const char *sqlStatementC
より良い)。
使用する:
const char* sqlStatementC = [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding];
また
const char* sqlStatementC = [sqlStatement UTF8String];