从枚举中选择随机值

swi*_*bie 2 enums swift

我有一个UIColor extensionenum命名为myColors:

enum myColors {
    static let backgroundColor = UIColor(hex: "#373737")
    static let strokeColor = UIColor(hex: "#FFFCF9")
    static let red = UIColor(hex: "#FF6978")
    static let green  = UIColor(hex: "#BCE784")
    static let blue   = UIColor(hex: "#B1DDF1")
    static let yellow = UIColor(hex: "#FFFD98")
    static let purple = UIColor(hex: "#A09ABC")
}
Run Code Online (Sandbox Code Playgroud)

我试图将sprite颜色随机设置为这些颜色之一(红色,绿色,蓝色,黄色,紫色).我在Stack Overflow上找到的答案很少,但没有一个有用.我试着这样做:

let sprite = Player(x,y,color: myColors(rawValue: myColors.purple.rawValue+1)
Run Code Online (Sandbox Code Playgroud)

但它没有用.紫色是枚举的最后一项,所以我选择了它.

Mar*_*ssa 8

我建议避免存储对象UIColor内部的enum,我的方法:

 enum myColors: String {
    case backgroundColor = "#373737"
    case strokeColor = "#FFFCF9"
    case red = "#FF6978"
    case green  = "#BCE784"
    case blue   = "#B1DDF1"
    case yellow = "#FFFD98"
    case purple = "#A09ABC"


    static func randomColor() -> UIColor {
        let colorsToGetRandomly = [myColors.red, myColors.green, myColors.blue, myColors.yellow, myColors.purple]
        let index = Int(arc4random_uniform(UInt32(colorsToGetRandomly.count)))
        let color = colorsToGetRandomly[index].rawValue
        return UIColor(hex: color)
    }
}

myColors.randomColor()
Run Code Online (Sandbox Code Playgroud)