我正在try 将我的一些Obj-C类转换为Swift.其他一些Obj-C类仍然在转换后的类中使用enum.我在发布前的文档中搜索了一下,但找不到,或者可能是找不到了.有没有办法在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
{
    ...
}

答案是Update:.不能在比1.2旧的Swift版本中完成.但根据这名官员的说法.在随XCode 6.3发布的Swift 1.2中,您可以在Objective-C中使用Swift Enum,方法是在enum前面添加@objc

推荐答案

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

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

无耻地从Swift Blog人中夺走

注意:这不适用于字符串枚举或具有关联值的枚举.您的枚举将需要整数绑定


在Objective-C中,这看起来像

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

Swift相关问答推荐

Vapor Swift 如何配置客户端连接超时

Swift:连接两个数组而不重复共享后缀/前缀

在 Swift 中,如何查看 Process() 传递给 shell 的字符串?

为什么 `map(foo)` 和 `map{ foo($0) }` 返回不同的结果?

AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false

由于权利不足,代码签名无效

iOS 和 FirebaseCrashlytics

如何在 Swift 中访问命令行参数?

SwiftUI:如何弹出到根视图

我可以在 Swift 中为泛型类型 T 分配默认类型吗?

我可以将 Xcode 与 iPhone Simulator.app 一起安装在外部硬盘上吗?

在 iOS 上选择退出 UISceneDelegate/SwiftUI

如何使用 SwiftUI 获得动态视图列表

当状态发生变化时如何运行操作?

Xcode 构建错误 - 多个命令生成 .o,目标“ProjectCoreData”具有两次列出的 Swift 源文件的编译命令

'找不到构建输入文件' Swift 4.2,Xcode 10.0

支持的 Swift 字符串格式说明符有哪些?

为什么以及何时在 Swift 中对 Array 使用惰性?

“${PODS_ROOT}/SwiftLint/swiftlint”使用 Xcode 10 导致“Command PhaseScriptExecution failed with a nonzero exit code”

如何为 Swift 类自动创建初始化程序?