Ответ 1
Конечно. У перечислений может быть необработанное значение. Чтобы процитировать документы:
Необработанные значения могут быть строками, символами или любыми целыми или числа с плавающей запятой
- Отрывок из: Apple Inc. "Язык быстрого программирования". интерактивные книги. https://itun.es/us/jEUH0.l,
Итак, вы можете использовать такой код:
enum StringEnum: String
{
case one = "one"
case two = "two"
case three = "three"
}
let anEnum = StringEnum(rawValue: "one")!
print("anEnum = \"\(anEnum.rawValue)\"")
Примечание. После каждого случая вам не нужно писать = "один" и т.д. Строковые значения по умолчанию совпадают с именами, поэтому вызов .rawValue
будет просто возвращать строку
ИЗМЕНИТЬ
Если вам нужно, чтобы строковое значение содержало такие вещи, как пробелы, которые недопустимы как часть значения case, вам необходимо явно установить строку. Таким образом,
enum StringEnum: String
{
case one
case two
case three
}
let anEnum = StringEnum.one
print("anEnum = \"\(anEnum)\"")
дает
anEnum = "one"
Но если вы хотите, чтобы case
one
отображал "значение один", вам нужно указать строковые значения:
enum StringEnum: String
{
case one = "value one"
case two = "value two"
case three = "value three"
}