[iOS] UserDefaults에 데이터 저장하기

Swiftios
avatar
2025.02.12
·
2 min read

UserDefaults는 앱의 데이터를 저장할 수 있는 로컬 저장소이다. 보통은 앱의 설정 등의 간단한? 작은? 데이터를 저장하기에 유용하다.

기본적으로 String, Int, Bool, Array 같은 기본 타입만 저장이 가능하다. 만약 사용자 정의 객체(클래스 또는 구조체)를 저장하려면 JSON 형태로 인코딩해서 저장할 수도 있다.

  1. 기본 타입의 데이터: 필요에 따라 UserDefaults.standard.string 를 변경

    // 저장
    UserDefaults.standard.set("username", forKey: "username")
    
    // 불러오기
    let username = UserDefaults.standard.string(forKey: "username") ?? "Unknown"
  2. 사용자 정의 객체:

    1. 객체를 JSON 형식으로 변환할 수 있게 Codable 프로토콜을 준수해야 함

      struct Person: Codable {
          let name: String
          let age: Int
      }
    2. JSONEncoder를 사용해 UserDefaults에 객체 저장

      func savePerson(_ person: Person) {
          let encoder = JSONEncoder()
          if let encoded = try? encoder.encode(person) {
              UserDefaults.standard.set(encoded, forKey: "savedPerson")
          }
      }
    3. 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
      }






- 컬렉션 아티클