作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试将我的一些 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];
}
关于objective-c - 是否可以在 Obj-C 中使用 Swift 的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139320/
我是一名优秀的程序员,十分优秀!