我有这个:
// Setup the SQL Statement and compile it for faster access
NSString *sqlStatement = @"SELECT * FROM nameList";
const char *sqlStatementC = (const char* )sqlStatement;
但ARC并不喜欢这样。有解决方法吗?
由于
答案 0 :(得分:9)
因为这绝对无效。 sqlStatement是一个NSString
,一个Objective-C对象。您不能简单地将其投射到const char *
。您必须使用方法作为C srting访问其内容:
const char *sqlStatementC = [sqlStatement UTF8String];
备注1:顺便说一句,这与ARC完全无关。
备注2:使用指针标记星号贴在变量名称上,而不是类型名称(即const char* sqlStatementC
不是很好,const char *sqlStatementC
更好)。
答案 1 :(得分:3)
使用:
const char* sqlStatementC = [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding];
或
const char* sqlStatementC = [sqlStatement UTF8String];