小编典典

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

all

我正在尝试将我的一些 Obj-C 类转换为 Swift。其他一些 Obj-C 类仍在该转换后的类中使用枚举。我在 Pre-Release Docs
中搜索并找不到它,或者我错过了它。有没有办法在 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
博客
。在与 XCode 6.3 一起发布的 Swift
1.2 中,您可以在 Objective-C 中使用 Swift Enum,方法是@objc在前面添加enum


阅读 109

收藏
2022-09-02

共1个答案

小编典典

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

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

无耻地取自Swift 博客

注意:这不适用于字符串枚举或具有关联值的枚举。您的枚举需要是 Int-bound


在 Objective-C 中,这看起来像

Bear type = BearBlack;
switch (type) {
    case BearBlack:
    case BearGrizzly:
    case BearPolar:
       [self runLikeHell];
}
2022-09-02