Swift-使用枚举来映射UISegmentedControl [英] Swift - Use an enum to map UISegmentedControl

查看:181
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆