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

我正在尝试将我的一些 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 Blog .在与 XCode 6.3 一起发布的 Swift 1.2 中,您可以通过在 enum 之前添加 @objc 来在 Objective-C 中使用 Swift Enum

最佳答案

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

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

无耻地取自Swift Blog

Note: This would not work for String enums or enums with associated values. Your enum will need to be Int-bound


在 Objective-C 中,这看起来像

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

https://stackoverflow.com/questions/24139320/

相关文章:

ios - Objective-C中的方法重载?

ios - UITableView 设置为静态单元格。是否可以以编程方式隐藏某些单元格?

objective-c - 错误 : writable atomic property cannot

ios - SDK iOS 8.0 中的产品类型单元测试包需要代码签名

ios - 更改 UITableView 部分标题的字体大小

objective-c - 为什么在 iOS 中使用前导下划线重命名合成属性?

ios - iPhone/iPad的UILabel如何设置粗体和斜体?

ios - 如何在 UIView 的顶部添加边框

iphone - iOS:如何执行 HTTP POST 请求?

ios - 在 iPhone App 中如何检测设备的屏幕分辨率