2014-06-10 11 views
13

Ich überschreibe meine Objective-C-Anwendung in Swift, und ich habe eine Frage zu enum's. In Ziel C würden Sie tun;typedef enum in swift

typedef enum { 
stopped, 
running 
} TimerState; 

, die die Fehler zurückgibt, Consecutive Declarations on a line must be separated by ‘;’ — Expected declaration — Expected identifier in enum declaration. Ich habe einige der Dokumentation darüber gelesen und festgestellt, dass Sie typedef nicht mehr vor enum's setzen. So in swift dachte ich, es wäre:

enum { 
stopped, 
running 
} TimerState; 

Aber ich weiß nicht, was mit dem TimerState zu tun, ist, dass innerhalb der geschweiften Klammern gehen? Was mache ich. Keine schlauen Kommentare, bitte. Danke im Voraus.

Antwort

43

So deklariert man in Swift kein enum. Sie können die Werte nicht einfach auflisten, wie Sie es in C tun könnten. Eine Aufzählung könnte in C mit der folgenden Technik durchgeführt werden.

enum TimerState { 
    stopped, 
    running 
}; 

In swift müssen Sie das Schlüsselwort case verwenden.

enum TimerState { 
    case stopped 
    case running 
} 

Was die typedef gibt es eine typealias in schnell.

typealias SomeNewEnum = TimerState 

Edit: Wenn Sie eine rohe Typ Ihre Enum zuweisen möchten, können Sie dies tun.

enum TimerState: Int { 
     case stopped = 0 
     case running // 1 
} 
+0

Vielen Dank. –

+0

Ja, das habe ich schon gemacht !! Ich habe tatsächlich eine andere Frage, müssen wir Attribute hinzufügen, wie wir es in @ property in Objective C tun? Zum Beispiel Eigenschaft (nichtatomisch, stark) ... wie machen wir das für IBOutlets in Swift? Mir wurde gesagt, dass wir das nicht müssen, aber ich weiß es nicht. –

+3

@ istx25 Sie sollten stattdessen eine andere Frage stellen und in den Kommentaren nachfragen. Es wird mehr Aufmerksamkeit und bessere Antworten bekommen. –