在swift中的typedef枚举

dou*_*mby 16 enums swift

我在Swift中重写了我的Objective C应用程序,我有一个关于枚举的问题.在Objective C中你会做;

typedef enum {
stopped,
running
} TimerState;
Run Code Online (Sandbox Code Playgroud)

返回错误,Consecutive Declarations on a line must be separated by ‘;’ — Expected declaration — Expected identifier in enum declaration.我阅读了一些关于此的文档,发现你不再typedef在enum之前放了.因此,我认为它会是:

enum {
stopped,
running
} TimerState;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何处理TimerState,这是否在花括号中?我该怎么办.请不要自作聪明评论.提前致谢.

Bri*_*acy 47

这不是你在Swift中声明枚举的方式.您不能简单地在C中列出值.枚举可以使用以下技术在C中完成.

enum TimerState {
    stopped,
    running
};
Run Code Online (Sandbox Code Playgroud)

在swift中,您必须使用case关键字.

enum TimerState {
    case stopped
    case running
}
Run Code Online (Sandbox Code Playgroud)

至于typedef,有一个typealias迅速.

typealias SomeNewEnum = TimerState
Run Code Online (Sandbox Code Playgroud)

编辑:如果要为枚举分配原始类型,可以这样做.

enum TimerState: Int {
        case stopped = 0
        case running // 1
}
Run Code Online (Sandbox Code Playgroud)

  • @ istx25你应该在评论中提出另一个问题,而不是在这里问.它会得到更多的关注和更好的答案. (3认同)