2017-01-26 4 views
2

Objective-CのコードをSwiftに翻訳しています。Objective-C互換Swift enum with NSUIntegerMax

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

しかし、UInt.maxではコンパイラエラーが発生します。「列挙型の場合の生の値はリテラルでなければならない」

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

ここでは何が起こっているのですか。それを下位互換性を持ってどのように翻訳できますか?

+1

このスレッドをチェックしてくださいhttp://stackoverflow.com/questions/31215825/how-to-convert-a-computed-value-to-a-iteral-for-enum-initialization –

+0

これらの値が定義されているからです実行時の代わりにコンパイル時に? –

答えて

0

UInt.maxは、実行時に定義される値です。しかし、列挙型の値であるためには、コンパイル時に値を定義する必要があります。