現在仕事で使っているアプリは、複数のユーザー設定をすべて管理するためにフラグを使用しています。
最近になってきてフラグが増えてきたため、OptionSetを使用して書いてみたところ、非常に便利だったので共有します。
OptionSetとは
swiftがもっているプロトコルの一種で、これを使用するとビット演算を簡単に扱うことができます。
実際に使ってみる
早速使用してみましょう。
OptionSetを定義
import Foundation
struct OrderState: OptionSet {
let rawValue: Int
static let largeText: OrderState = .init(rawValue: 1 << 0) //1
static let colorYellow: OrderState = .init(rawValue: 1 << 5) //32
}
今回はフラグを2つ管理します。
たとえば、webの管理画面でlargeText(文字サイズ大)とcolorYellow(文字カラーを黄色)というスイッチがあったとします。
仮にlargeTextをOFFにしてcolorYellowをONにした場合、「colorYellowフラグを立てる」といい、OptionSetのなかでフラグが立っているものを探します。
フラグを呼び出して使用してみる
let orderState = OrderState.init(rawValue: 32)
// colorYellowだけがONの場合
print(self.orderState.contains(.largeText)) // false
print(self.orderState.contains(.colorYellow)) // true
rawValue = 32 の場合、2の5乗 (2^5) = 32なので、colorYellowがONになります。
指定したフラグが立っているかどうかは、このようにcontains
メソッドで判定できます。
コメント