UserDefaults +@

신동준·2022년 6월 9일
0

UserDefaults를 사용해서 기존의 PrimitiveData(Int,String...)말고 Object를 저장해보자 이 방식은 누군가 Dictionary 와 Codable개념을 통해서 만든방식인거같아 보인다

struct CoadbleObject: Codable {
    var value: Int
    var value2: String
    var value3: Date
    var value4: Double
    var value5: Bool
}


extension UserDefaults {
    func setCoableObeject<T: Codable>(_ data: T?,  forKey defaultName:String) {
        let encoded = try? JSONEncoder().encode(data)
        set(encoded, forKey: defaultName)
    }
    func codableObject<T : Codable>(dataType: T.Type, key: String) -> T? {
        guard let userDefaultData = data(forKey:key) else {
            return nil
        }
        return try? JSONDecoder().decode(T.self, from: userDefaultData)
    }
}



let key = "foo_key"
let codableObject = CoadbleObject(value: 100, value2: "Hello", value3: Date(), value4: 3.141592, value5: false)
UserDefaults.standard.setCoableObeject(codableObject, forKey: key)

if let retrieveCodableObject = UserDefaults.standard.codableObject(dataType: CoadbleObject.self, key: key) {
    print(retrieveCodableObject.value)
    print(retrieveCodableObject.value2)
    print(retrieveCodableObject.value3)
} else {
    print("Not yet Saved With Key \(key)")
}![](https://velog.velcdn.com/images/dnrur124/post/35285ba5-dd02-4f50-bc95-c07bc1b5ce10/image.png)
![](https://velog.velcdn.com/images/dnrur124/post/45ee91ce-f8ba-4a0f-a0c0-db1f19705536/image.png)
![](https://velog.velcdn.com/images/dnrur124/post/97bb25ef-fd55-46b4-9f95-be37fd9803f6/image.png)

위의 사용된 Model 프로퍼티 값을 유저디퐅트를 사용하여 저장해보았고 또 오브젝트자체를 유저디폴트에 저장해봤다

저장하게 되면 스크린샷에 나와있듯이 JSONData형태로 저장된다

추가적으로
UserDefaults를 통해서 내프로젝트의 데이터를 영구적으로 저장해았음
프로젝트깃허브: https://github.com/David-ShinDJ/NC-David.git

profile
Swift 예비개발자

0개의 댓글