내일배움캠프 7기 Day32 TIL(1)

Daisy Kim·2023년 8월 24일
0

오늘의 TIL (Feat. 어제의 TIL에 이어)

🔍 UserDefaults 를 이용한 데이터 저장

공식문서 참고

iOS앱에서 앱 상태 및 설정, 사용자 기본값과 같은 간단하고 작은 데이터를 저장하기 위한 인터페이스.

특징

  • 앱 종료 후에도 데이터 유지 가능
  • Key-Value(값) 쌍으로 데이터를 저장하고 검색 가능(Key-Value 데이터베이스)
  • 싱글톤 인스턴스 로 사용됨 ⇒ 앱의 어느곳에서도 접근할 수 있음

싱글톤 인스턴스 가 무엇인고 하니...

🖋️ 싱글톤 패턴(Singleton Pattern) 에 대해 알아보자

앱이 시작될 때, 특정 용도로 객체 인스턴스를 최초 1회 하나만 생성(static)하여 공용으로 사용하는 디자인 패턴

특징
: 클래스를 여러번 호출하더라도 인스턴스는 딱! 한번만 생성. 전역변수처럼 코드의 어느 곳에서 접근하던 간에 같은 메모리에 접근 가능.

장점

  • 인스턴스를 최초 1회만 생성하므로 메모리와 성능 측면에서 효율이 좋다.
  • 클래스 간 데이터 공유가 쉽다.
  • 인스턴스가 1개라는 것을 보증받는다.(Thread Safe)

단점

  • 싱글톤을 위한 코드 구현 필요
  • 데이터 공유가 많아질 시, 다른 클래스의 인스턴스들 사이의 결합도가 높아져 개방-폐쇄 원칙(OCP, Open-Closed Principle)을 위배
    ⇒ 수정과 테스트가 어려워짐

참고블로그 1
참고블로그 2


🔍 다시 UserDefaults 내용으로 돌아와서

  • 기본값 설정: 앱의 기본값을 설정 가능
  • 사용자 설정 저장: 사용자가 선택한 값을 저장 가능
  • 상태유지: 앱의 상태를 저장 가능(ex: 마지막 화면이나 사용자가 입력한 데이터를 저장)
  • 데이터 형태
    • 문자열(String) : NSString
    • 정수형(Int) : NSNumber
    • 부동소수점형(Float, Double) : NSNumber
    • Bool(True / False) : NSNumber
    • 날짜(Date) : NSDate
    • 배열(Array) : NSArray
    • 사전(Dictionary) : NSDictionary
<예시코드>

// 데이터 저장
UserDefaults.standard.set("Doyeon Kim", forKey: "name")
UserDefaults.standard.set(31, forKey: "age")

// 데이터 검색
if let username = UserDefaults.standard.string(forKey: "name") {
print("사용자 이름: \(username)")
}
if let age = UserDefaults.standard.integer(forKey: "age") {
print("나이: \(age)")
}

// 데이터 업데이트
UserDefaults.standard.set(32, forKey: "age")

// 데이터 삭제
UserDefaults.standard.removeObject(forKey: "name")


// 기본값 설정
let defaultSettings = ["soundEnabled": true, "notificationsEnabled": true]
UserDefaults.standard.register(defaults: defaultSettings)


// 기본값으로부터 데이터 가져오기
let soundEnabled = UserDefaults.standard.bool(forKey: "soundEnabled")
let notificationsEnabled = UserDefaults.standard.bool(forKey: "notificationsEnabled")
profile
Technology proderit homini

0개의 댓글