私はCで列挙型を持っており、インデックスはStringで表される必要があります。インデックスによる文字列列挙へのアクセス
整数型インデックスでは、スウィート列挙型の列挙型はどのように使用できますか?
Iは、スイフトに列挙型をコピーしたい文字列にタイプを設定してテキストを表示するために、生の値のすべてを定義し、スウィフト文字列列挙のための生の値のテキストを抽出するC列挙値を使用します。
それ以外の場合は、文字列の配列を作成します。しかし、列挙型を使用する方が便利です。
私はCで列挙型を持っており、インデックスはStringで表される必要があります。インデックスによる文字列列挙へのアクセス
整数型インデックスでは、スウィート列挙型の列挙型はどのように使用できますか?
Iは、スイフトに列挙型をコピーしたい文字列にタイプを設定してテキストを表示するために、生の値のすべてを定義し、スウィフト文字列列挙のための生の値のテキストを抽出するC列挙値を使用します。
それ以外の場合は、文字列の配列を作成します。しかし、列挙型を使用する方が便利です。
スウィフトでは、列挙型にはインデックスの情報が保持されません(少なくとも、プログラマには提供されません)。
ので:
は、どのように、String型のスウィフト列挙型は、整数インデックスで使用することができますか?
答えは「できません」です。
あなたのバウンドの文字列と同じことができるならば、例えば、...
をあなたがInt
(または列挙型の場合)を結合することができ、以外の多くの方法でString
値は、ちょうど文字列の配列を作成しますあなたの文字列がテキストを表示する少し複雑にする必要がある場合、あなたは私たちすることができ
enum MyEnum: Int {
case foo
case bar
case baz
var string: String {
return String(self)
}
}
if let value = MyEnum(rawValue: 0) {
print(value.string) //->foo
}
:caseラベルは、あなたがこのような何かを書くことができますe Swift Dictionary
は、列挙型のケースと文字列をバインドします。
enum AnotherEnum: Int {
case foo
case bar
case baz
static let mapper: [AnotherEnum: String] = [
.foo: "FooString",
.bar: "BarString",
.baz: "BazString"
]
var string: String {
return AnotherEnum.mapper[self]!
}
}
if let value = AnotherEnum(rawValue: 1) {
print(value.string) //->BarString
}
もう少し読みやすい文字列の簡単な配列より。
簡単な回避策は、文字列列挙型を列挙する場合にも便利です。
enum MyEnum: String {
case foo = "fooString"
case bar = "barString"
case baz = "bazString"
static let allValues = [foo, bar, baz] //must maintain second copy of values
}
//enumeration advantage
for value in MyEnum.allValues {
print(value)
}
//get value by index
let value = MyEnum.allValues[1]
print(value) //barString
まったく素晴らしい、ありがとう。私はこれが言語そのものになると思う。もちろん、同じものにアクセスするための既存の方法論がない限り。 –
非常に良い、ありがとう:) – jarryd