2017-01-26 2 views
2

Je traduis du code d'Objective-C vers Swift.Enumération Swift compatible Objective-C avec NSUIntegerMax

typedef NS_ENUM(NSUInteger, SomeType) { 
    SomeTypeZero = 0, 
    SomeTypeOne = 1, 
    SomeTypeMax = NSUIntegerMax 
}; 

Cependant UInt.max me donne une erreur de compilation: « Valeur brute pour le cas enum doit être un littéral. »

@objc enum SomeType: UInt { 
    case zero = 0 
    case one = 6 
    case max = UInt.max 
} 

Alors, que se passe-t-il ici et comment puis-je le traduire, avec une rétrocompatibilité?

+1

http://stackoverflow.com/questions/31215825/how-to-convert-a-computed-value-to-a-literal-for-enum-initialization –

+0

Donc, c'est parce que ces valeurs sont définies sur la compilation au lieu de l'exécution? –

Répondre

0

UInt.max est une valeur qui est définie lors de l'exécution. Cependant, pour être une valeur d'une énumération, la valeur doit être définie au moment de la compilation.