我正在使用枚举,类似这样:
typedef NS_ENUM(NSInteger, MyURLType) {
MyURLType1,
MyURLType2,
MyURLType3
};
当我尝试比较或识别类型时出现问题:
if (type == MyURLType2)
对于"Incompatible integer to pointer conversion"
和MyUrlType2
,我收到MyUrlType3
警告(不是MyURLType1
)。我在宣言中做错了吗?有什么想法吗?
谢谢!
答案 0 :(得分:6)
来自您的评论
是的,我使用的是MyURLType * type = MyURLTypeX
然后type
不属于MyURLType
类型,属于pointer to MyURLType
类型。
if (type == MyURLType2)
在这里,您将指针类型(type
)与整数类型(MyURLType
)进行比较。如果整数类型为0
,则不会生成警告,因为它可能是对NULL
的检查。
比较(type
)时,您需要将MyURLType
声明为简单MyURLType type =…
(type
)或取消引用if (*type == MyURLType2)
。
答案 1 :(得分:0)
为什么不将类型定义为int?然后,您可以比较整数。简单干净的解决方案。
int type = MyURLTypeX;
允许你这样做
if (type == MyURLType2)
因为它们都是完整的。
怎么可能没有人提出这个呢?
答案 2 :(得分:-1)
只是研究这个,但看起来另一个选择是施放枚举:
if (type == (MyURLType *) MyURLType2)