Objective c 警告:语义问题:不兼容的指针类型正在初始化';字符*';使用类型为';NSString*';
我正在努力做到以下几点:Objective c 警告:语义问题:不兼容的指针类型正在初始化';字符*';使用类型为';NSString*';,objective-c,cocoa,nsstring,Objective C,Cocoa,Nsstring,我正在努力做到以下几点: NSString *personDesc = [NSString stringWithFormat:@"Person named %@", person.name]; char *myArguments[] = { personDesc, NULL }; 但它产生了这个错误: warning: Semantic Issue: Incompatible pointer types initializing 'char *' with an expression of t
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转换为字符的原因是,我正在将myArguments
传递到AuthorizationExecuteWithPrivileges
e、 g
有什么想法吗?没错。NSString不是char*。它是一根线。他们彼此无关
因为你没有给出你真正想要做什么的暗示,所以不能给出进一步的建议。如果愿意,您可以将NSString转换为char*,例如使用
getCString:maxLength:encoding:
。但是你为什么要这么做呢?没错。NSString不是char*。它是一根线。他们彼此无关
因为你没有给出你真正想要做什么的暗示,所以不能给出进一步的建议。如果愿意,您可以将NSString转换为char*,例如使用
getCString:maxLength:encoding:
。但是为什么要这样做呢?正如马特在上面所说的,您需要先将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);
正如matt在上面所说的,您需要先将
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);
对不起,关于我缺乏信息,你是完全正确的。对不起,请查看更新,但是关于我缺乏信息,你是绝对正确的。请参阅更新当我尝试此代码时,我在将
cPersonDesc
分配给myArguments
时收到此警告:警告:语义问题:使用类型为“const char*”的表达式初始化“char*”丢弃限定符
请参阅BetterAuthorization示例代码;他们专门谈论这个问题。基本上,您只需丢弃const
(即转换为char*
)使编译器平静。当我尝试此代码时,我在将cPersonDesc
赋值给myArguments
时收到此警告:警告:语义问题:使用类型为“const char*”的表达式初始化“char*”丢弃限定符
请参阅BetterAuthorization示例代码;他们专门谈论这个问题。基本上,您只需丢弃const
(即转换为char*
)即可使编译器平静下来。