предупреждение: семантическая проблема: несовместимые типы указателей, инициализирующие 'char *' выражением типа 'NSString *' - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь сделать следующее:

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

например

AuthorizationExecuteWithPrivileges(auth, tool, kAuthorizationFlagDefaults, myArguments, NULL);

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Как сказал выше Мэтт, вам нужно преобразовать 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 голос
/ 01 марта 2012

Это правильно. NSString не является символом *. Это NSString. Они не имеют ничего общего друг с другом.

Поскольку вы не указываете, что вы на самом деле пытаетесь сделать, дальнейший совет не может быть дан. Вы можете преобразовать NSString в char *, если хотите, например, с getCString:maxLength:encoding:. Но почему вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...