【问题标题】:"Binary operator '~=' cannot be applied to operands of type '“二元运算符'~='不能应用于'类型的操作数
【发布时间】:2015-04-30 18:21:06
【问题描述】:

我已经集成了目标 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
    };

但是现在当我尝试在 switch case 中使用这个枚举时,它不允许我快速运行并抛出错误

"二元运算符'~='不能应用于类型的操作数 '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)


        }

【问题讨论】:

  • 使用 ==== switch theDevice.state {.....} 而不是 switch (theDevice.state) {....}
  • 不,它不工作

标签: ios objective-c swift enums


【解决方案1】:

如果 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
};

然后将它作为 Swift enum 导入,你可以这样做

switch(theDevice.state) {
case .DISCONNECTED:
    // ...
}

如果你必须保留它

enum LE_DEVICE_STATE
{
    LE_DEVICE_STATE_DISCONNECTED=0,
    LE_DEVICE_STATE_CONNECTING,
    LE_DEVICE_STATE_CONNECTED,
    LE_DEVICE_STATE_UPDATING_FIRMWARE
};

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

switch(theDevice.state.value) {
case LE_DEVICE_STATE_DISCONNECTED.value:
    // ...;
}

【讨论】:

    【解决方案2】:

    如果你想要 Obj-C 和 Swift 枚举之间的直接兼容性,那么必须使用 NS_ENUM 声明 Obj-C 枚举。对于普通 C (Obj-C) 枚举,请使用 .value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2019-02-13
      • 2019-08-23
      • 2016-09-20
      相关资源
      最近更新 更多