[IOS] UserDefaults에 dictionary를 저장하는 방법

UserDefaults에 dictionary를 저장하는 방법은 dictionary를 JSON 형태로 직렬화하여 저장하는 방법을 사용합니다.

먼저, 저장하고자 하는 dictionary를 JSON 형태로 변환합니다:

// 저장할 딕셔너리 생성
let myDictionary: [String: Any] = [
    "name": "John Doe",
    "age": 30,
    "isPremiumUser": true
]

// 딕셔너리를 JSON 데이터로 직렬화
do {
    let jsonData = try JSONSerialization.data(withJSONObject: myDictionary, options: [])
    
    // JSON 데이터를 문자열로 변환
    if let jsonString = String(data: jsonData, encoding: .utf8) {
        // UserDefaults에 JSON 문자열 저장
        UserDefaults.standard.set(jsonString, forKey: "myDictionaryKey")
    }
} catch {
    print("Error serializing dictionary to JSON: \(error)")
}

이제 위의 코드를 사용하여 dictionary를 JSON 문자열로 변환하여 UserDefaults에 저장합니다.

다음은 UserDefaults에서 저장된 JSON 문자열을 다시 dictionary로 변환하여 불러오는 방법입니다:

// UserDefaults에서 JSON 문자열 불러오기
if let jsonString = UserDefaults.standard.string(forKey: "myDictionaryKey") {
    if let jsonData = jsonString.data(using: .utf8) {
        do {
            // JSON 데이터를 dictionary로 역직렬화
            if let storedDictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] {
                print("Stored Dictionary: \(storedDictionary)")
            }
        } catch {
            print("Error deserializing JSON to dictionary: \(error)")
        }
    }
}

위의 코드에서, UserDefaults에서 저장된 JSON 문자열을 불러와 다시 JSON 데이터로 변환한 후, 이를 dictionary로 역직렬화합니다. 이렇게 하면 UserDefaults에 dictionary를 저장하고 불러올 수 있습니다. 단, 저장하는 값과 불러오는 값의 형식을 일관성 있게 유지해야 합니다.