gpt4 book ai didi

objective-c - 收到 "Enumeration values ' x'、 'y' 和 'z' not returned in switch"消息,而实际上正在处理这些枚举。这是怎么回事?

转载 作者:行者123 更新时间:2023-11-30 18:02:50 27 4
gpt4 key购买 nike

我有一个这样定义的枚举:

//ModelClass.h
typedef enum { Automatic, Manual, Off } MyModes;

后来,在 ViewController 中,我在一个方法中有一个 switch 语句,用于打开我的枚举类型的变量。我的 switch 语句如下所示:

//MyViewController.m
#import "ModelClass.h"

-(void) dryer:(MyClass *)m didChangeMode:(MyModes) newMode
{

//Code within an instance method, utilizing the above enumeration
switch (newMode) //newMode is an instance of MyMode enum.
{
case Automatic:
//Some code...
break;
case Off:
//Some code...
break;
case Manual:
//Some code...
break;
}
}

上面的 switch 语句是从我的代码中复制/粘贴的,我所做的就是用 //Some code... 注释替换功能代码。

XCode 不断在 switch (newMode) 行向我发出警告,指出“枚举值‘Automatic’、‘Manual’和‘Off’未在 switch 中处理”。

此外,在每个 case 语句中,我收到一条错误消息,指出“表达式不是整数常量表达式”,尽管它应该是,因为它是一个枚举。

我该如何解决这个问题?奇怪的是,我在 MyModes 枚举之后的下一行定义了 ModelClass header (由 4 个枚举项组成)中的另一个枚举,并且在我的 View Controller 中,我有另一种方法可以执行完全相同类型的 switch/case 操作。使用该枚举器,我在该方法上没有收到任何警告或错误。

可能发生了什么?

编辑

我将方法声明放在代码片段中。 newMode 变量是该方法的参数。此外,前面提到的其他正常工作的枚举器也作为参数传递到另一个方法中。

最佳答案

在双方的帮助下KeithMicheal在上面的评论中,我已经能够解决这个问题。根据基思的建议,我正在回答我自己的问题。

这个问题是我自己的错,因为我在 ViewController 中定义了一些按钮,每个按钮分别命名为 AutomaticManualOff。编译器假定我引用的是 UIButton,而不是 enum 类型,因为它们是局部范围变量。

重命名枚举值并更新代码修复了此错误。就我而言,我重新定义了枚举:

typedef enum { AutoMode, ManualMode, OffMode } MyModes;

关于objective-c - 收到 "Enumeration values ' x'、 'y' 和 'z' not returned in switch"消息,而实际上正在处理这些枚举。这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com