Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 警告:语义问题:不兼容的指针类型正在初始化';字符*';使用类型为';NSString*';_Objective C_Cocoa_Nsstring - Fatal编程技术网

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*
)即可使编译器平静下来。