[swift] SwiftyUserDefaults에서 타입 안전성 확보하기

SwiftyUserDefaults는 Swift 프로젝트에서 쉽게 UserDefaults를 사용할 수 있게 해주는 라이브러리입니다. 하지만 기본적으로 UserDefaults는 Any 타입을 사용하므로, 값을 저장하고 가져올 때 타입 안전성에 대한 보장이 없습니다. 이러한 문제를 해결하기 위해 SwiftyUserDefaults의 확장 기능을 사용하여 타입 안전성을 확보할 수 있습니다.

설치

SwiftyUserDefaults는 CocoaPods를 통해 간단하게 설치할 수 있습니다. Podfile에 다음과 같이 추가합니다:

pod 'SwiftyUserDefaults'

그리고 터미널에서 pod install을 실행하여 라이브러리를 설치합니다.

타입 안전성 확보하기

SwiftyUserDefaults의 확장 기능을 사용하여 타입 안전성을 확보하려면, UserDefaults의 Key를 사용하여 확장 프로퍼티를 선언합니다. 각각의 확장 프로퍼티는 속성 타입에 대한 타입 안전성을 보장합니다.

import SwiftyUserDefaults

extension DefaultsKeys {
    static let isDarkMode = DefaultsKey<Bool>("isDarkMode")
    static let username = DefaultsKey<String>("username")
    static let age = DefaultsKey<Int>("age")
}

위의 예제에서는 isDarkMode, username, age라는 세 가지 확장 프로퍼티를 정의하였습니다. 각각의 프로퍼티는 Bool, String, Int 타입을 갖고 있으며, 이를 통해 저장하고 가져올 값의 타입을 명확하게 지정할 수 있습니다.

값 저장하기

타입 안전성을 확보한 후에는 값을 저장할 때 해당 확장 프로퍼티를 사용합니다. 예를 들어, 다음과 같이 isDarkMode 프로퍼티에 값을 저장할 수 있습니다.

Defaults[.isDarkMode] = true

위의 코드에서 Defaults[.isDarkMode]DefaultsKeys.isDarkMode에 해당하는 값에 접근하고 있으며, 이를 통해 타입 안전성을 확보한 상태에서 값을 저장할 수 있습니다.

값 가져오기

저장된 값을 가져올 때도 동일한 방식으로 확장 프로퍼티를 사용합니다. 아래 예제는 username 프로퍼티에 저장된 값을 가져오는 예제입니다.

let username = Defaults[.username]
print("Username: \(username)")

위의 코드에서 Defaults[.username]DefaultsKeys.username에 해당하는 값에 접근하고 있으며, 이를 통해 타입 안전성을 확보한 상태에서 값을 가져올 수 있습니다.

결론

SwiftyUserDefaults를 사용하여 UserDefaults를 더욱 안전하게 사용할 수 있습니다. 확장 기능을 활용하여 각각의 속성에 대한 타입 안전성을 확보하고, 값 저장 및 가져오기에 보다 안정적으로 사용할 수 있습니다.

참고 자료