我正在尝试执行以下操作:
NSString *personDesc = [NSString stringWithFormat:@"Person named %@", person.name];
char *myArguments[] = { personDesc, NULL };
但它产生了这个错误:
warning: Semantic Issue: Incompatible pointer types initializing 'char *' with an expression of type 'NSString *'
我尝试将NSString转换为char的原因是因为我将myArguments
传递给AuthorizationExecuteWithPrivileges
e.g。
AuthorizationExecuteWithPrivileges(auth, tool, kAuthorizationFlagDefaults, myArguments, NULL);
有什么想法吗?
答案 0 :(得分:2)
如上所述,您需要先将NSString
转换为char*
,然后才能执行您想要的操作。尝试类似:
NSStringEncoding stringEncoding = NSUTF8StringEncoding;
NSString *personDesc = [NSString stringWithFormat:@"Person named %@", person.name];
const char *cPersonDesc = [personDesc cStringUsingEncoding:stringEncoding];
char *myArguments[] = { cPersonDesc, NULL };
// auth and tool already exist
AuthorizationExecuteWithPrivileges(auth, tool, kAuthorizationFlagDefaults, myArguments, NULL);
答案 1 :(得分:1)
没错。 NSString不是char *。它是NSString。他们彼此无关。
由于您没有说明您真正想要做什么,因此无法提供进一步的建议。如果你愿意,可以将NSString转换为char *,例如与getCString:maxLength:encoding:
。但你为什么要这么做?