一尘不染

是否可以在Obj-C中使用Swift的枚举?

swift

我正在尝试将我的某些Obj-C类转换为Swift。还有其他一些Obj-
C类仍在该转换后的类中使用枚举。我在“预发布文档”中进行了搜索,但找不到它,或者我错过了它。有没有办法在Obj-
C类中使用Swift枚举?或指向此问题的文档的链接?

这就是我在旧的Obj-C代码和新的Swift代码中声明枚举的方式。

我以前的Obj-C代码:

typedef NS_ENUM(NSInteger, SomeEnum)
{
    SomeEnumA,
    SomeEnumB,
    SomeEnumC
};

@interface SomeClass : NSObject

...

@end

我的新Swift代码:

enum SomeEnum: NSInteger
{
    case A
    case B
    case C
};

class SomeClass: NSObject
{
    ...
}

更新: 从答案。在Swift低于1.2的旧版本中无法完成。但是根据这个官方的Swift
Blog
。在与XCode 6.3一起发布的Swift
1.2中,您可以在Objective-C中使用Swift Enum,方法是@objcenum


阅读 265

收藏
2020-07-07

共1个答案

一尘不染

从Swift版本1.2(Xcode 6.3)开始,您可以。只需在枚举声明前面加上前缀@objc

@objc enum Bear: Int {
    case Black, Grizzly, Polar
}

无耻地从Swift博客中获取

注意:这不适用于String枚举或具有关联值的枚举。您的枚举必须是整数绑定的


在Objective-C中,这看起来像

Bear type = BearBlack;
switch (type) {
    case BearBlack:
    case BearGrizzly:
    case BearPolar:
       [self runLikeHell];
}
2020-07-07