Получить значение типа enum в swift - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь получить значение по умолчанию для перечисления, чтобы я мог использовать его в качестве параметра.Этот код не работает, но я хотел бы получить что-то вроде:

print("Param: \(Params.RCLoss.description)")

и вывод должен быть:

Param: RC_LOSS_MAN

Вот код:

enum Params {
  enum RCLoss: Int32, CustomStringConvertible {
    case disable = 0
    case enable = 1

    var description: String {
        return "RC_LOSS_MAN"
    }
  } 
}

Я хочу быть в состоянии передать это:

set(parameterType: Params.RCLoss.description, parameterValue: Params.RCLoss.enable)

, что должно соответствовать установленным этим значениям:

set(parameterType: "RC_LOSS_MAN", parameterValue: 0)

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Кажется, вы хотите просто

enum rcLoss: Int32 {
  case disable = 0
  case enable = 1 

  static var description: String {
    return "RC_LOSS_MAN"
  }
}

rcLoss - это тип, description должен быть static, чтобы вы могли звонить rcLoss.description. А это значит, что вы не можете использовать CustomStringConvertible. Вы должны использовать CustomStringConvertible для преобразования значений перечисления в String.

0 голосов
/ 06 марта 2019

С Быстрая книга - Перечисления :

Вы получаете доступ к необработанному значению регистрационного случая с помощью его свойства rawValue.

set(parameterType: Params.rcLoss.description, parameterValue: Params.rcLoss.enable.rawValue)

Если вы можете, я бы использовал перечисление в качестве типа формального параметра, чтобы кто-то не мог передать недопустимое значение этой функции. Также я предполагаю, что есть причина, по которой вы вложили перечисление в другое пустое перечисление ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...