我有这个:
// 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];