Swift - используйте перечисление для сопоставления UISegmentedControl - PullRequest
0 голосов
/ 04 мая 2018

Использование трехпозиционного сегментированного элемента управления, представляющего секунды 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?

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете использовать вычисляемое свойство , чтобы вернуть значение для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...