Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Ios 发送';常量字符*';至类型为'的参数;const uint8_t*';错误_Ios_Objective C_Compiler Warnings - Fatal编程技术网

Ios 发送';常量字符*';至类型为'的参数;const uint8_t*';错误

Ios 发送';常量字符*';至类型为'的参数;const uint8_t*';错误,ios,objective-c,compiler-warnings,Ios,Objective C,Compiler Warnings,我正在编写一个iOS应用程序,其中我在常量文件中声明了一个字符串常量: NSString * const kHeader = @"name,age,gender"; 和常数 FOUNDATION_EXPORT NSString * const kHeader; 我正试图将此字符串写入ViewController类中的NSOutput流,如下所示: [outputStream写入:[kHeader UTF8String]最大长度:[kHeader length]] 这将显示编译器警告: 将“c

我正在编写一个iOS应用程序,其中我在常量文件中声明了一个字符串常量:

NSString * const kHeader = @"name,age,gender";
和常数

FOUNDATION_EXPORT NSString * const kHeader;
我正试图将此字符串写入ViewController类中的NSOutput流,如下所示:

[outputStream写入:[kHeader UTF8String]最大长度:[kHeader length]]

这将显示编译器警告: 将“const char*”发送到“const uint8_t*”类型的参数(也称为“const unsigned char*”)会在指针之间转换为具有不同符号的整数类型


这是什么意思?我如何解决这个问题?请帮忙。谷歌搜索没有产生太多有用的结果。

除了有符号/无符号指针警告之外,您的代码实际上可能是错误的。
[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]];

除了有符号/无符号指针警告之外,您的代码实际上可能是错误的。
[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]];

这意味着
UTF8String
是有符号的,并且输出流需要一个无符号值。只需添加一个强制转换来消除警告。这意味着
UTF8String
是有符号的,并且输出流需要一个无符号的值。只需添加一个石膏使警告静音。让我试试这个&回来。你说的很有道理。谢谢。让我试试这个,回来。你说的很有道理。非常感谢。