我在C中有一個枚舉,索引需要用一個字符串表示。通過索引訪問字符串枚舉
整數索引如何使用Swift類型的String類型?
我想將枚舉複製到Swift中,將類型設置爲字符串並定義所有的原始值以顯示文本,然後使用C枚舉值爲Swift String枚舉提取原始值文本。
否則,我將只創建一個字符串數組..但是枚舉將更加可用。
我在C中有一個枚舉,索引需要用一個字符串表示。通過索引訪問字符串枚舉
整數索引如何使用Swift類型的String類型?
我想將枚舉複製到Swift中,將類型設置爲字符串並定義所有的原始值以顯示文本,然後使用C枚舉值爲Swift String枚舉提取原始值文本。
否則,我將只創建一個字符串數組..但是枚舉將更加可用。
在Swift中,枚舉類型不保存案例的索引信息(至少不是程序員提供的)。
所以:
如何字符串類型的雨燕通過枚舉整數索引使用嗎?
答案是「你不能」。
可以綁定Int
(或枚舉例)和比只需創建一個字符串數組其他許多方面String
值..
例如,如果您綁定的字符串可以是相同的case標籤,你可以寫這樣的事情:
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
}
如果你的字符串需要一個稍微複雜一些顯示文本,你能給我們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