티스토리 뷰

iOS

[iOS] UserDefaults - 데이터 저장

Peppo 2022. 1. 2. 22:07
728x90

오늘은 UserDefaults에 대해 공부 해볼게요!

 

UserDefault란 간단한 데이터를 저장할때 사용하는 로컬 데이터 저장소 라고 보시면 되는데요!

즉, 사용자의 핸드폰에 저장하는거죠.

 

간단한 데이터라 하면 이런게 있어요. 

  • 앱 최초실행 기록 저장 
  • 사용자 기본설정 등 

 

사용법

UserDefaults는 사용자의 기본 데이터베이스를 key-value 쌍으로 저장하는 인터페이스입니다.

이때 key의 값은 String(문자열)로 저장을 합니다.

아래 코드를 보시죠.

 

//값 저장
UserDefaults.standard.set(value: Any?, forKey: String)

//값 불러오기
UserDefaults.standard.string(forKey: String)
// UserDefaults.싱글톤.불러오고자 하는값의 타입(forKey: key의 타입)

 

값을 저장할 때는 value의 타입을 지정할 수 있어요.

 

사용법은 알았으니 직접 해보면서 익혀보죠!

 

예제

초기세팅된 소스코드는 여기 있어요

 

먼저 앱을 실행하면 아래 처럼 나올텐데요.

 

 

textField에서 값을 입력후 Button을 누르면 기본값(label)이 입력했던 값으로 변경 되게 해놓았습니다.

해볼까요 ?

 

 

굿굿

 

 

근데 앱을 껏다 켜거나, 화면전환(navigation)을 하게 되면 다시 원상복구가 됩니다..

 

 

우리가 원하는건 데이터가 저장 되어야 하잖아요? 이럴때 사용하는게 UserDefaults 인데요! 

 

사용법은 위에서 보셨죠 !? 그대로 가져와서 사용해봅시다. 

 

(아래코드를 따라 쳐보시면 이해가 더 잘됩니다!!)

// ViewController

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var label: UILabel!
    
    // 상수 처리
    let defaults = UserDefaults.standard

    override func viewDidLoad() {
        super.viewDidLoad()

        // 값 불러오기
        let getTextValue = defaults.string(forKey: "textValue")
        
        // getTextValue가 nil이면 label에 "기본값" 보여주기
        label.text = getTextValue ?? "기본값"
        
    }
    
    @IBAction func saveData(_ sender: Any) {
        // textField에 적힌 글을 label에 보여주기
        label.text = textField.text
    
        // textField에 있는 글 저장
        defaults.set(textField.text, forKey: "textValue")
 
    }

 

위에서 UserDefaults에 관한 코드를 파헤쳐 보자면

1. Button을 누르면 textField에 입력된 값을 "textValue"라는 key에 저장하게 됩니다. 

2. viewDidLoad(화면이 렌더링 된 후) key: "textValue"  저장되어 있었던 값을 가져와 label에 보여줍니다. 

 

결과화면 

 

최종 소스코드는 여기 있습니다. 😊


 

도움이 되었길 바랍니다 !! 어느덧 2021년 마지막 날이네요.

다들 연말 마무리 잘하시고 내년에는 더 좋은일들만 가득하길 !! ㅎㅎㅎ

 

 

728x90