[英]Incompatible pointer types sending 'const CFStringRef' (aka 'const struct __CFString *const') to parameter of type 'id'
[英]Sending 'const char *' to parameter of type 'const uint8_t *' error
我正在编码一个iOS App,其中我在Constants文件中声明了一个字符串常量:
NSString * const kHeader = @"name,age,gender";
并在Constants.h中
FOUNDATION_EXPORT NSString * const kHeader;
并尝试将此字符串写入ViewController类中的NSOutput流,如下所示:
[outputStream写:[kHeader UTF8String] maxLength:[kHeader长度]];
这显示了一个编译器警告:将'const char *'发送到'const uint8_t *'类型的参数(aka'const unsigned char *')会在指针之间转换为具有不同符号的整数类型
这是什么意思? 我该如何解决? 请帮忙。 Googl'ing并没有产生太多有用的结果。
除了有符号/无符号指针警告外,您的代码实际上还可能是错误的 。 [kHeader length]
返回字符串中的Unicode字符数,该数字可以与[kHeader UTF8String]
返回的UTF-8字节数不同。
例如, @"€"
具有一个Unicode字符,但具有3个UTF-8字节。
所以你应该用
const char *utf8string = [kHeader UTF8String];
[outputStream write:(const uint8_t *)utf8string maxLength:strlen(utf8string)];
或者
NSData *data = [kHeader dataUsingEncoding:NSUTF8StringEncoding];
[outputStream write:[data bytes] maxLength:[data length]];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.