在Swift中访问数组中枚举的rawValue

时间:2015-03-07 01:41:48

标签: arrays swift enums max member

我尝试使用maxElement处理数组中的枚举,由.rawValue访问,如下例所示:

var planets: [Planets] = [.Mars, .Earth, .Jupiter]
maxElement(planets.rawValue)

我可以使用其他方法来获取最大的rawValue,但是如果可以这样使用它会非常简单,但它是否可能?

2 个答案:

答案 0 :(得分:2)

没有直接的方法。

let maxPlanet = Planets(rawValue: maxElement(planets.map({$0.rawValue})))!

你必须:

  1. 制作一个rawValue s
  2. 数组
  3. 从中获取maxElement
  4. 使用Planets(rawValue:)
  5. 转换回枚举

答案 1 :(得分:2)

符合Comparable协议,将maxElement用于您的枚举。

enum Planets: Int, Comparable {
    case Earth, Mars, Jupiter
}

func <(lhs: Planets, rhs: Planets) -> Bool {
    return lhs.rawValue < rhs.rawValue
}

然后

let planets: [Planets] = [.Mars, .Jupiter, .Earth]
let maxPlanet = maxElement(planets) // .Jupiter