본문 바로가기

Programming/Swift

Swift OptionSet으로 깔끔한 옵션 관리하기

반응형

OptionSet이란?

OptionSet은 Swift에서 비트마스크(Bitmask) 를 쉽게 다룰 수 있도록 도와주는 프로토콜입니다.
여러 개의 옵션을 조합하여 사용할 때 유용하며, Set처럼 동작하지만 내부적으로는 비트 연산을 활용하여 최적화됩니다.

예를 들어, 파일 권한(읽기, 쓰기, 실행)을 다룰 때 OptionSet을 사용하면 코드가 더 깔끔하고 효율적으로 작성됩니다.


OptionSet 사용 예제

아래는 파일 접근 권한을 OptionSet으로 정의한 예제입니다.

struct FilePermissions: OptionSet {
    let rawValue: Int

    static let read    = FilePermissions(rawValue: 1 << 0) // 0b001
    static let write   = FilePermissions(rawValue: 1 << 1) // 0b010
    static let execute = FilePermissions(rawValue: 1 << 2) // 0b100

    static let all: FilePermissions = [.read, .write, .execute]
}

// 사용 예제
var myPermissions: FilePermissions = [.read, .write]

if myPermissions.contains(.read) {
    print("읽기 권한 있음")
}

myPermissions.insert(.execute) // 실행 권한 추가
print(myPermissions) // FilePermissions(rawValue: 7) → 모든 권한 포함됨

OptionSet을 사용하면 좋은 경우

여러 개의 옵션을 조합하여 사용해야 할 때
비트 연산을 활용하여 성능을 최적화하고 싶을 때
설정, 권한, 상태 플래그 등을 쉽게 관리하고 싶을 때

반응형