ios - 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")!
}
}
}
解决方案
如果你坚持使用枚举,你可以使用这个:
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")
}
}
推荐阅读
- kubernetes - 使用 Kubernetes 时是否需要管理节点级别的操作系统更新?
- c++ - 如何在我的班级中有一个指向 A 类或 B 类的指针?
- ios - 如何仅隐藏前导或尾随 NavigationItem 按钮
- python-3.x - 解决环境:| 发现冲突!寻找不兼容的软件包。更新是永恒的
- matlab - 如何在 Matlab 中导入 Stata dta 文件
- app-inventor - 当我想向 TinyDB 添加新项目时,如何在 Mit App Inventor 中自动制作新标签
- date - 使用输入文件中的最后一个日期值作为 gnuplot 中的标签文本
- c++ - 提升 zip-iterator 和结构化绑定
- python-3.x - 熊猫选择总和等于另一列中的值的行
- amazon-web-services - Hive 查询抛出错误输入字符串:“__HIVE_D”不是整数