首页 > 解决方案 > Swift - 枚举采用整数并确定范围

问题描述

我想要一个可以采用整数值的枚举,并使用它来确定与之关联的情况并返回图像。以下是我想要实现的目标,但我不太清楚如何实现它。非常感谢你的帮助!

enum Icon (input: Int) {
//use input value to check which case need to return image name
   case 0...100
   case 101...200
   case 201+

var image: UIImage {
    switch self {
        case .0...100: return UIImage(named: "plane.png")!
        case .101...200: return UIImage(named: "arrow.png")!
        case .201+: return UIImage(named: "logo.png")!
    }
  }
}

标签: iosswiftenums

解决方案


如果你坚持使用枚举,你可以使用这个:

enum Icon: String {
    case plane: "plane.png"
    case arrow: "arrow.png"
    case logo:  "logo.png"

    static func image(for value: Int) -> UIImage {
        let icon: Icon
        switch value {
        case 0...100:
            icon = .plane
        case 101...200:
            icon = .arrow
        case 200...:
            icon = .logo
        default:
            fatalError("Invalid int value")
        }

        return UIImage(named: icon.rawValue)!
    }
}

尽管以下内容肯定更简单:

func image(for value: Int) -> UIImage {
    switch value {
        case 0...100:
            return UIImage(named: "plane.png")!
        case 101...200:
            return UIImage(named: "arrow.png")!
        case 200...:
            return UIImage(named: "logo.png")!
        default:
            fatalError("Invalid int value")
    }
}

推荐阅读