Trong Swift, kiểu enum không giữ thông tin chỉ mục của các trường hợp (ít nhất, không được cung cấp cho người lập trình).
Vì vậy:
Làm thế nào có thể một enum Swift của String loại được sử dụng bởi chỉ số nguyên?
Câu trả lời là "Bạn không thể".
Bạn có thể ràng buộc Int
(hoặc enum trường hợp) và String
giá trị bằng nhiều cách khác hơn chỉ cần tạo một mảng các chuỗi ..
Ví dụ, nếu Strings ràng buộc của bạn có thể giống như trường hợp nhãn, bạn có thể viết một cái gì đó như thế này:
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
}
Nếu Strings của bạn cần phải phức tạp nhiều hơn một chút để hiển thị văn bản, bạn có thể chúng tôi e Swift Dictionary
để liên kết các trường hợp enum và Strings.
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
}
dễ đọc hơn một chút so với một mảng đơn giản của chuỗi.
Rất tốt, cảm ơn :) – jarryd