"二进制运算符'〜='不能应用于类型的操作数'

Use*_*343 2 enums objective-c ios swift

我已经整合了Objective C框架以在我的Swift项目中使用.现在我的目标c框架我有一些Enum decalred alraedy

e.g.

enum LE_DEVICE_STATE
    {
        LE_DEVICE_STATE_DISCONNECTED=0,
        LE_DEVICE_STATE_CONNECTING,
         LE_DEVICE_STATE_CONNECTED,
        LE_DEVICE_STATE_UPDATING_FIRMWARE
    };
Run Code Online (Sandbox Code Playgroud)

但是现在当我尝试在开关盒中使用这个枚举时,它不允许我迅速并抛出错误

"二进制运算符'〜='不能应用于'LE_DEVICE_STATE'和'(LE_DEVICE_STATE)''类型的操作数

.so有人可以指导我如何编写此代码?

我试图做以下

switch (theDevice.state) {

            case LE_DEVICE_STATE_DISCONNECTED:
                self.btnConnect.setTitle("", forState: UIControlState.Normal)

            case LE_DEVICE_STATE_DISCONNECTED:
            self.btnConnect.setTitle("", forState: UIControlState.Normal)


        case LE_DEVICE_STATE_DISCONNECTED:
            self.btnConnect.setTitle("", forState: UIControlState.Normal)


        case LE_DEVICE_STATE_DISCONNECTED:
            self.btnConnect.setTitle("", forState: UIControlState.Normal)


            default:
            self.btnConnect.setTitle("", forState: UIControlState.Normal)


        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 5

如果Objective-C枚举被定义为

typedef NS_ENUM(NSInteger, LE_DEVICE_STATE) {
    LE_DEVICE_STATE_DISCONNECTED=0,
    LE_DEVICE_STATE_CONNECTING,
    LE_DEVICE_STATE_CONNECTED,
    LE_DEVICE_STATE_UPDATING_FIRMWARE
};
Run Code Online (Sandbox Code Playgroud)

然后它作为Swift导入enum,你可以做到

switch(theDevice.state) {
case .DISCONNECTED:
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果你必须保持它

enum LE_DEVICE_STATE
{
    LE_DEVICE_STATE_DISCONNECTED=0,
    LE_DEVICE_STATE_CONNECTING,
    LE_DEVICE_STATE_CONNECTED,
    LE_DEVICE_STATE_UPDATING_FIRMWARE
};
Run Code Online (Sandbox Code Playgroud)

然后将其作为a导入struct,您可以将其与.value以下内容进行比较:

switch(theDevice.state.value) {
case LE_DEVICE_STATE_DISCONNECTED.value:
    // ...;
}
Run Code Online (Sandbox Code Playgroud)