【发布时间】:2018-08-30 13:47:11
【问题描述】:
我正在尝试实现类似二进制掩码之类的东西,其中我将 Int 转换为它的组件数组(2 的幂),例如:
69 = [64, 4, 1]
我不想使用二进制掩码和移位,因为我想对界面元素使用 Swift 枚举:
enum State: Int{
case readyButton = 1
case workingButton = 2
case sleepingButton = 4
//etc
}
then 7 = [.sleepingButton, .workingButton, .readyButton] // 7 = 4+2+1
在 Swift 中是否有一些工具可以帮助我将 Int 转换为 2 个组件的幂?
【问题讨论】:
-
听起来像是
OptionSet的工作? developer.apple.com/documentation/swift/optionset -
谢谢,有没有办法将原始 Int 分解为 OptionSet 值数组?
-
@AlexStone:您可以“枚举” OptionSet 值的位:stackoverflow.com/q/32102936/1187415。
-
swift中没有bit to bit的操作符吗?
-
@AlexStone 唯一的状态是
let rawValue: Int。只需使用init(rawValue: Int)从整数中获取集合,然后使用.contains(.readyButton)。