Swift - 使用枚举来映射UISegmentedControl

时间:2018-05-03 21:58:14

标签: swift enums

使用表示秒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()

效果很好。

在枚举的第一种情况下,是否有更多'Swifty'方法来获取整数60,而不使用函数或switch语句?

1 个答案:

答案 0 :(得分:0)

您可以使用计算属性返回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