k-coding

User Default 본문

iOS/Xcode

User Default

chkhn_oiiu 2022. 1. 25. 01:11

User Default

 

어플리케이션을 만들다보면 데이터를 저장하고 다시 불러오는 과정을 해야 할 때가 정말 많다.

 

그치만 그냥 하면 당연하게도 저장이 되지 않는다

 

데이터를 저장하기 위해 여러가지 방법이 있지만 코어 데이터니,서버 DB니 다 너무 어려워

 

난 그냥 간단하게 저장하고 싶다고..!! 이럴때 사용하는게 UserDefault되시겠다.

 

우선 간단하게 다음과 같이 스토리보드를 한번 구상해보자

자 내 설계는 좌측 ViewController의 버튼을 누르면 우측 ViewController로 이동하고

 

TextField에 글을 쓰고 Button을 누르면 아래에 있는  Label에 글이 바뀌고 저장되어야한다.

 

그러기 위해서 코드도 물론 작성해보았다.

 

import UIKit

class SecondViewController: UIViewController {

    @IBOutlet weak var textLabel: UILabel!
    @IBOutlet weak var textField: UITextField!
    
    var saveText: String!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    

    @IBAction func saveButton(_ sender: UIButton) {
        saveText = textField.text
        textLabel.text = saveText
    }
    
}

대망의 결과는?

 

..... 왜 화면을 껐다가 나오면 저장이 되질 않네...??

 

이럴때 UserDefault를 활용하자 !

 

UserDefault를 쉽게 말하면 데이터 저장소라고 생각하면된다. 

 

내부적인 plist 파일에 데이터를 저장하여 어플리케이션 내 어디든 데이터를 읽고 저장할 수 있다.

 

그치만 물론 간단한만큼 보안상으론 굉장히 취약하다는점!!

 

UserDefault에 특이한 점은 set을 통하여 key, value를 사용한다는 점이다

 

위에 있던 코드를 다음과 같이 바꾸어보자

import UIKit

class SecondViewController: UIViewController {

    @IBOutlet weak var textLabel: UILabel!
    @IBOutlet weak var textField: UITextField!
    
    var saveText: String = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 데이터 불러오기
        textLabel.text = UserDefaults.standard.string(forKey: "save")
    }
    

    @IBAction func saveButton(_ sender: UIButton) {
        saveText = textField.text ?? ""
        // 데이터 저장
        UserDefaults.standard.set(saveText, forKey: "save")
        textLabel.text = saveText
    }
    
}

다음과 같이 UserDefaults.standard를 사용해서 저장하고 실행한다면??

 

 

 

다음과 같이 잠깐 화면을 나갔다가 다시 들어가도 그대로 데이터가 저장되어있는 모습이다!!

 

이 UserDefaults는 어플리케이션을 종료해도 그 데이터가 그대로 남아있고,

 

데이터를 따로 삭제하는 코드를 넣는것이 아니라면

 

어플리케이션을 삭제했다가 다시 깔아야 데이터가 말끔히 지워진다!

 

내가 만든 간단한 String뿐만 아니라 배열이나 Int,Float 심지어 switch의 On/Off등등도 다 비슷하게 저장이 가능한 

 

UserDefaults 프로젝트 앱을 만들때 많이 사용될것 같으니 꼭 알아둡시다!

'iOS > Xcode' 카테고리의 다른 글

Xcode CollectionView 콜랙션 뷰 ( 2 )  (0) 2022.02.04
Xcode CollectionView 콜랙션 뷰 ( 1 )  (0) 2022.02.03
tableView 그리고, searchBar  (0) 2022.01.25
화면 전환  (2) 2022.01.18
Xcode 오토레이아웃 (AutoLayout) (4)  (0) 2022.01.13
Comments