Swift-使用枚举来映射UISegmentedControl [英] Swift - Use an enum to map UISegmentedControl
本文介绍了Swift-使用枚举来映射UISegmentedControl的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用表示秒60、30和15的三位置分段控件。枚举的代码:
Using a three position segmented control representing seconds 60, 30 and 15. The code for an enum:
enum RefreshRate: Int {
case sixty = 0
case thirty
case fifteen
func refreshEvery() -> Double {
switch self {
case .sixty: return 3600.0
case .thirty: return 1800.0
case .fifteen: return 900.0
}
}
}
用法如下:
let defaultValue = UserDefaults.standard.integer(forKey: "refreshRate")
let refreshInterval = RefreshRate(rawValue: defaultValue)?.refreshEvery()
效果很好。
是否有更快捷的获取方式枚举的第一种情况下的整数60,而不使用函数或switch语句?
Is there a more 'Swifty' way to get the integer 60 in the first case of the enum, without using the function or a switch statement?
推荐答案
您可以使用计算属性返回 refreshEvery
的值:
enum RefreshRate: Int {
case sixty = 0
case thirty
case fifteen
var refreshEvery: Double {
return 60 * [60, 30, 15][self.rawValue]
}
}
let rate = RefreshRate.sixty
print(rate.rawValue) // 0
print(rate.refreshEvery) // 3600.0
这篇关于Swift-使用枚举来映射UISegmentedControl的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文