Objective-c enum获取错误" ...不能转换为' NativeObject'"在斯威夫特

时间:2014-07-11 18:12:21

标签: ios enums swift

我在objective-c文件中定义了一个typedef:

typedef enum : long{
    tb_closed_k = 0,
    tb_open_k
 } MyState;

现在我在Swift类中创建了这个类型的成员:

@objc class myClass {
    var activeState: MyState = tb_closed_k

   func testState( state:MyState ){
       if state != activeState{
         ..do something
       }
    }
}

所以比较状态的行给了我错误“MyState不能转换为'NativeObject'。我正在使用xCode 6-Beta3。任何想法。

感谢 礼

1 个答案:

答案 0 :(得分:2)

您的枚举不能直接导入Swift,因为它不使用NS_ENUM宏。在Swift中重写枚举(使用Int,而不是long)或合并NS_ENUM。在任何情况下,在任何情况下使用long都是一个非常糟糕的主意,因为它不会作为本机类型进入Swift,而NSInteger将作为Int进入。