-2

私はこれを持っています:

// Setup the SQL Statement and compile it for faster access
NSString *sqlStatement = @"SELECT * FROM nameList";

const char *sqlStatementC  = (const char* )sqlStatement;

しかし、ARCはこれを好みません。回避策はありますか?

ありがとう

4

2 に答える 2

9

これは絶対に無効だからです。sqlStatementはNSString、Objective-Cオブジェクトです。単純ににキャストすることはできませんconst char *。C srtingとしてそのコンテンツにアクセスするには、メソッドを使用する必要があります。

const char *sqlStatementC = [sqlStatement UTF8String];

備考1:ちなみに、これはARCとは全く関係ありません。

備考2:タイプ名ではなく、変数名に付けられたポインターマーカーのアスタリスクを使用します(つまりconst char* sqlStatementC、あまり良くない、const char *sqlStatementCより良い)。

于 2012-06-18T13:00:55.067 に答える
3

使用する:

const char* sqlStatementC  = [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding];

また

const char* sqlStatementC  = [sqlStatement UTF8String];
于 2012-06-18T13:02:43.457 に答える