【发布时间】:2018-05-03 21:58:13
【问题描述】:
使用代表秒 60、30 和 15 的三位分段控件。枚举的代码:
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 语句?
【问题讨论】:
-
顺便说一句 - 这个问题与 UISegmentedController 有什么关系?
-
即使这不是你要问的:
refreshEvery更快捷的方式是:var refreshInterval: Double { ... } -
@rmaddy 如果有人想要存储分段控件的索引。您的回答提供了一个很好的选择。
-
您的问题绝对没有提到您的枚举被用来表示分段控件的索引。那将是有用的信息。您的问题使它看起来仅用于确定与枚举案例相关的秒数。
-
@rmaddy 这就是为什么枚举的第一行是
case sixty = 0。这将使三十 = 1 和十五 = 2。