[swift] SwiftyUserDefaults를 사용한 앱 환경 설정 저장하기

앱 개발 중에는 사용자별로 다른 환경 설정을 저장하여 서비스의 개인화를 제공하는 경우가 많습니다. 이를 위해 SwiftyUserDefaults라는 편리한 라이브러리를 사용할 수 있습니다.

SwiftyUserDefaults란?

SwiftyUserDefaults는 UserDefaults를 보다 쉽고 간편하게 사용할 수 있도록 도와주는 Swift 라이브러리입니다. Swift의 속성접근자 @propertyWrapper를 이용하여 UserDefaults를 추상화하였으며, 타입 세이프한 방식으로 값을 저장하고 가져올 수 있습니다.

설치하기

SwiftyUserDefaults를 사용하기 위해서는 먼저 프로젝트에 라이브러리를 추가해야 합니다. CocoaPods를 사용하는 경우, Podfile에 다음과 같이 추가합니다.

pod 'SwiftyUserDefaults'

설치 후, 프로젝트를 업데이트합니다.

사용 예제

다음은 SwiftyUserDefaults를 사용하여 앱의 환경 설정을 저장하는 간단한 예제입니다.

import SwiftyUserDefaults

// 환경 설정 모델 정의
struct AppSettings {
    @UserDefaultsStorage(key: "autoplayEnabled", defaultValue: false)
    static var autoplayEnabled: Bool
    
    @UserDefaultsStorage(key: "notificationEnabled", defaultValue: true)
    static var notificationEnabled: Bool
    
    @UserDefaultsStorage(key: "themeColor", defaultValue: UIColor.systemBlue)
    static var themeColor: UIColor
}

// 환경 설정 사용 예제
AppSettings.autoplayEnabled = true
print(AppSettings.autoplayEnabled) // true

AppSettings.themeColor = UIColor.systemOrange

UserDefaults.standard.synchronize() // 변경 사항 저장

print(UserDefaults.standard.value(forKey: "autoplayEnabled")) // Optional(true)

위 예제에서 AppSettings 구조체는 SwiftyUserDefaults의 UserDefaultsStorage 속성 접근자를 사용하여 각 환경 설정 값을 저장합니다. 이때, @UserDefaultsStoragekey 매개변수를 사용하여 UserDefaults에서 값을 저장하고 가져올 때 사용할 키를 지정합니다. 또한, defaultValue를 사용하여 값의 기본값을 설정할 수도 있습니다.

값을 저장하려면 해당 속성에 값을 할당하고, 값을 가져오려면 해당 속성을 사용하면 됩니다. 변경된 값은 UserDefaults에 자동으로 저장되지 않으므로, 변경 사항을 저장하기 위해 UserDefaults.standard.synchronize()를 호출해야 합니다.

결론

SwiftyUserDefaults를 사용하면 UserDefaults를 보다 편리하게 사용할 수 있습니다. 속성 접근자를 사용하므로 타입 세이프한 방식으로 값에 접근할 수 있으며, 기본값을 설정할 수도 있습니다. 앱의 환경 설정을 저장하는 등 다양한 용도로 사용할 수 있으며, 개발 생산성을 높여줍니다.

더 자세한 내용은 SwiftyUserDefaults GitHub 리포지토리에서 확인할 수 있습니다.