この列挙を考える(そのタイプはInt
であることに注意)はあなたがそれの名前から列挙型の値を初期化することができるケースです(*ない*そのRawValue?)
enum MyTestEnum : Int{
case one = 1
case eight = 8
case unknown = -1
}
あなたは簡単に基づいて、このバージョンを初期化することができます生の値、そう...
let value = MyTestEnum(rawValue:-1)
のように私は 'の後、それはケース名自体(再び、ない生の値の文字列表現で初期化することが可能かどうかを確認しようとしているが、言葉ですケース 'など)...
let value = MyTestEnum(caseName:"eight")
注:可能であれば、生の値の型にかかわらず、これはの任意の enumで動作します。例えば、これは...
enum MyOtherEnum{
case xxx
case yyy
case zzz
}
let value = MyOtherEnum(caseName:"xxx")
これはできますか?
思考:
- 私はスウィフトは、完全修飾クラス名を表す文字列指定されたクラスをインスタンス化する方法があると思います。おそらく類似のものがここで使用できます。
JSON(de)seriailationの目的ですか? – Alexander
いいえ、それは一般的な目的です(私たちは他の言語では問題なし)。しかし、これを試している特定のユースケースは、Xcode拡張を記述し、列挙のケース名をコマンドIDとし、文字列rawValueラベルにする。ユーザーからコマンドを取得したら、コマンドIDを取得するので、スイッチで使用できるようにケースを再作成しようとしています。 – MarqueIV
'String'のrawValueを使用していない理由はありますか? 8、2、-1、...が必要ですか? – Alexander