Objective c 如何在objective C中将字符串转换为char

Objective c 如何在objective C中将字符串转换为char,objective-c,type-conversion,Objective C,Type Conversion,如何在objective C中将字符串转换为char。下面是我正在使用的代码 NSString *param = [paramsToPass objectAtIndex:0] [class gseInit:&getData]; [class gseCom:param]; NSLog(@"%@", param); 在3号线,我得到以下警告: 不兼容的指针类型正在向类型的参数发送“NSString*” “char*” 那么,如何克服上述警告呢?请提前感谢 NSString *param =

如何在objective C中将字符串转换为char。下面是我正在使用的代码

NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:param];
NSLog(@"%@", param);
在3号线,我得到以下警告:

不兼容的指针类型正在向类型的参数发送“NSString*” “char*”

那么,如何克服上述警告呢?请提前感谢

NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:[param cStringUsingEncoding:NSUTF8Encoding]];
NSLog(@"%@", param);

您可能希望获得
NSString
的UTF-8表示:

NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:[param UTF8String]];
NSLog(@"%@", param);
但是,只有当
gseCom:
而不是更新字符串时(即param为
const char*
),这才有效。真正了解这一点的唯一方法是阅读该类的文档(您没有提到该类是什么,因此我无法帮助您)

如果它没有更新参数,并且
gseCom
被错误地定义为接受
char*
,而不是
const char*
,则可以将其转换为正确的类型:

[class gseCom:(char *)[param UTF8String]];
但是,如果它正在更新
参数
,则需要为其提供一个缓冲区来使用:

[class gseInit:&getData];

NSString *param = [paramsToPass objectAtIndex:0]

// Create a buffer containing the c-string (in UTF-8)
#define BUFSIZ 256    // This size depends on what the string could hold
char cparam[BUFSIZ];
[param getCString:cparam maxLength:BUFSIZ encoding:NSUTF8Encoding];

// Let the method update the string
NSLog(@"before %s", cparam);
[class gseCom:cparam];
NSLog(@"after %s", cparam);

您可能对苹果开发者网站上的内容感兴趣

也许,只是也许你应该读一下NSString的文档??读一下,他实际上想要一个
char*
而不是
char
。嗨,Regexident,谢谢你的帮助,在使用你的代码转换后,我得到了以下警告,如何克服这个问题,我通过谷歌查过,我无法得到正确的解决方案,警告是,将“const char*”发送到“char*”类型的参数将丢弃限定符。这个警告对你来说可能很简单,但我对objective C是新手,提前谢谢。嗨,特洛伊敌人,谢谢你的帮助,在使用你的代码转换后,我得到了以下警告,如何克服这个问题,我通过谷歌查对了,我无法得到正确的解决方案,警告是,将“const char*”发送到“char*”类型的参数将丢弃限定符。这个警告对你来说可能很简单,但我不熟悉目标C,提前谢谢你。@shasha我已经用解决这个问题的方法更新了我的答案。
NSString *str = @"Hello";
char h = [str characterAtIndex:0];
NSLog(@"%c", h);