UserDefaults는 앱의 데이터를 저장할 수 있는 로컬 저장소이다. 보통은 앱의 설정 등의 간단한? 작은? 데이터를 저장하기에 유용하다.
기본적으로 String
, Int
, Bool
, Array
같은 기본 타입만 저장이 가능하다. 만약 사용자 정의 객체(클래스 또는 구조체)를 저장하려면 JSON 형태로 인코딩해서 저장할 수도 있다.
기본 타입의 데이터: 필요에 따라
UserDefaults.standard.string
를 변경// 저장 UserDefaults.standard.set("username", forKey: "username") // 불러오기 let username = UserDefaults.standard.string(forKey: "username") ?? "Unknown"
사용자 정의 객체:
객체를 JSON 형식으로 변환할 수 있게 Codable 프로토콜을 준수해야 함
struct Person: Codable { let name: String let age: Int }
JSONEncoder를 사용해 UserDefaults에 객체 저장
func savePerson(_ person: Person) { let encoder = JSONEncoder() if let encoded = try? encoder.encode(person) { UserDefaults.standard.set(encoded, forKey: "savedPerson") } }
JSONDecoder를 사용해 UserDefaults에서 객체 불러오기
func loadPerson() -> Person? { if let savedData = UserDefaults.standard.data(forKey: "savedPerson") { let decoder = JSONDecoder() if let loadedPerson = try? decoder.decode(Person.self, from: savedData) { return loadedPerson } } return nil }