iOS에서 UserDefaults에 dictionary를 저장하는 방법은 간단합니다. UserDefaults는 간단한 데이터를 저장하기에 적합한 방법으로, 사용자 설정과 같은 작은 데이터를 저장하는 데 사용됩니다. 딕셔너리는 키-값 쌍의 컬렉션으로 사용되므로, 이를 UserDefaults에 저장하려면 dictionary 자체를 저장하는 것이 가능합니다.
다음은 iOS에서 UserDefaults에 dictionary를 저장하는 방법입니다:
// 저장할 딕셔너리 생성
let myDictionary: [String: Any] = [
"name": "John Doe",
"age": 30,
"isPremiumUser": true
]
// UserDefaults 객체 생성
let userDefaults = UserDefaults.standard
// 딕셔너리 저장
userDefaults.set(myDictionary, forKey: "myDictionaryKey")
// UserDefaults 변경사항 저장
userDefaults.synchronize()
위의 코드에서는 myDictionary
라는 딕셔너리를 생성하고, UserDefaults의 set(_:forKey:)
메서드를 사용하여 “myDictionaryKey”라는 키로 해당 딕셔너리를 저장합니다. 마지막으로, synchronize()
메서드를 호출하여 변경사항을 저장합니다. synchronize()
를 호출하지 않아도 일반적으로 UserDefaults가 자동으로 변경사항을 저장하지만, 명시적으로 호출하는 것이 권장됩니다.
이제 딕셔너리를 UserDefaults에서 가져오려면 다음과 같이 할 수 있습니다:
// UserDefaults 객체 생성
let userDefaults = UserDefaults.standard
// 저장된 딕셔너리 가져오기
if let storedDictionary = userDefaults.dictionary(forKey: "myDictionaryKey") as? [String: Any] {
// 딕셔너리가 정상적으로 가져와졌을 때 처리
print(storedDictionary)
} else {
// 딕셔너리가 없거나 형변환에 실패했을 때 처리
print("No dictionary found or data type mismatch.")
}
주의할 점은 UserDefaults에 저장 가능한 데이터 타입은 NSString, NSNumber, NSData, NSDate, NSArray, NSDictionary입니다. 따라서 custom 클래스와 같이 위 타입에 해당하지 않는 데이터는 직접 UserDefaults에 저장할 수 없습니다. 이런 경우에는 데이터를 직렬화하여 위의 데이터 타입 중 하나로 변환한 후 저장해야 합니다. 대표적인 직렬화 방법으로 JSONSerialization을 이용하는 것이 있습니다.