Old_SWIFT(221012)/기본이야기

UserDefaults(데이터저장) 다루기

KataRN 2022. 1. 24. 23:27
반응형

안녕하세요 KataRN입니다.

오늘은 데이터를 저장하는 방법에 대해 이야기해보려합니다.

 

저희가 앱의 환경설정에서 설정을 하면 앱에서 기억을 해야합니다.

왜냐면 앱을 껏다키면 보통 데이터가 지워지죠? 그래서 앱내에 데이터를 기억시켜야합니다.

그때 Userdefault를 이용하여 데이터를 기억시킵니다.

 

우선 아래 데이터를 저장하는방법입니다.

let userdefault = UserDefaults.standard
userdefault.set(1, forKey: "숫자")
userdefault.set("A", forKey: "문자")
userdefault.set(true, forKey: "진실혹은거짓")


let array = ["a", "b", "c"]
userdefault.set(array, forKey: "배열")

데이터를 저장시키는 방식은 보시는바와 같이 Key : Value값입니다.

단일 데이터뿐만 아니라 배열도 가능합니다.

 

해당 데이터를 읽을 때는 아래와같습니다.

userdefault.object(forKey: "배열")
userdefault.string(forKey: "문자")
userdefault.integer(forKey: "숫자")
userdefault.bool(forKey: "진실혹은거짓")

데이터를 지울때는 아래와 같이 사용합니다.

userdefault.removeObject(forKey: "배열")

 

데이터를 지웠다가 새로 써도 되지만 덮어쓰기도 됩니다.

없는 데이터를 읽을때는 nil값이 나옵니다.

 

userdefaults가 생각보다 활용도가 높습니다.

 

내용추가 (220404)

커스텀한 객체를 저장하는법

간단한 데이터는 저장하고 불러오는데 문제가 없습니다.

다만 struct로 커스텀한 객체를 저장하고 불러올 수 없습니다.

 

데이터를 저장할때는 PropertyListEncoder().encode()를 통해 인코딩 후에 해야한다.

var alerts: [Alert] = alertList
UserDefaults.standard.set(try? PropertyListEncoder().encode(self.alerts), forKey: "alerts")

 

데이터를 불러올때는 PropertyListDecoder().decode()를 통해 디코딩 후에 해야한다.

let data = UserDefaults.standard.value(forKey: "alerts") as? Data
try? PropertyListDecoder().decode([Alert].self, from: data)

 

 

오늘도 긴글 읽어주셔서 감사합니다.

반응형