Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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 警告:使用NS_枚举类型时,整数到指针的转换不兼容_Ios_Objective C_Enums - Fatal编程技术网

Ios 警告:使用NS_枚举类型时,整数到指针的转换不兼容

Ios 警告:使用NS_枚举类型时,整数到指针的转换不兼容,ios,objective-c,enums,Ios,Objective C,Enums,我使用的是枚举,类似于这样: typedef NS_ENUM(NSInteger, MyURLType) { MyURLType1, MyURLType2, MyURLType3 }; 尝试比较或识别类型时出现问题: if (type == MyURLType2) 如果出现MyUrlType2和MyUrlType3(而不是MyURLType1),我将收到一个警告“不兼容的整数到指针转换”)。我在声明中有没有做错什么?有什么想法吗 谢谢 根据您的评论 是的,我正在使用M

我使用的是枚举,类似于这样:

typedef NS_ENUM(NSInteger, MyURLType) {
    MyURLType1,
    MyURLType2,
    MyURLType3
};
尝试比较或识别类型时出现问题:

if (type == MyURLType2)
如果出现
MyUrlType2
MyUrlType3
(而不是
MyURLType1
),我将收到一个
警告“不兼容的整数到指针转换”
)。我在声明中有没有做错什么?有什么想法吗

谢谢

根据您的评论


是的,我正在使用MyURLType*type=MyURLTypeX

那么
类型
不是类型
MyURLType
,而是类型
指向MyURLType的指针

if (type == MyURLType2)
这里比较的是指针类型(
type
)和整数类型(
MyURLType
)。如果整数类型为
0
,则不会生成警告,因为它可能是对
NULL
的检查


您需要将
type
声明为简单的
MyURLType
MyURLType-type=…
)或在比较时取消引用
type
if(*type==MyURLType2)
)。

刚刚在研究这个问题,但另一个选项似乎是强制转换枚举:


如果(type==(MyURLType*)MyURLType2)
为什么不将type定义为int?然后,您可以比较整数。简单清洁的解决方案

int type = MyURLTypeX; 
将允许您这样做

if(type==MyURLType2)
因为它们都是int


怎么可能还没有人提出这一点呢?

这里的类型是什么?整数?或者MyURLType的变量?是MyURLType的变量显示
类型的声明
您可以使用*像MyURLType*类型是的,我正在使用MyURLType*类型=MyUrlTypeX就是这样!非常感谢。根据您的编译器设置,您可能会收到一条警告,将int与MyURLType或int与NSInteger进行比较,因此在这种情况下,您的建议是错误的。事实上,如果你没有打开这个警告,我会推荐它。你应该一直说你的意思。将其声明为
MyURLType-type=MyURLTypeX
并在以后保存。如果您将所有枚举值声明为int,那么有一天您将比较两个完全不同的枚举,您将花费很长时间来找出哪里出了问题。