iOS:如何在启用ARC的情况下转换为const char?

时间:2012-06-18 12:58:41

标签: ios casting char const

我有这个:

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

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

但ARC并不喜欢这样。有解决方法吗?

由于

2 个答案:

答案 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];