감자주먹밥

[IOS] UserDefaults 알아보기 본문

IOS/UIKit

[IOS] UserDefaults 알아보기

JustHm 2022. 1. 13. 02:46
728x90

앱 개발 공부를 시작하고 여러가지를 하면서 정말 궁금했던게 사용자의 세팅 정보를 그대로 저장해 놓는 방법? 였습니다.

 

안드로이드를 공부할 땐 알지 못하고 DB를 연결해서 써야하나..? 하고 넘겼었는데 이번 IOS공부를 하면서 LocalDB 비슷한게 있단걸 처음 알았습니다!


apple 공식문서

"앱 실행 전반에 걸쳐 키-값 쌍을 지속적으로 저장할 수 있는 사용자의 기본 데이터베이스에 대한 인터페이스입니다."

 

앱 설정 데이터, 로그인 시 아이디 등 단일 데이터를 저장하는데에 적합합니다.

 

앱이 삭제될 때는 데이터가 함께 사라집니다.

key-value 형태로 저장이 되는데... JSON이 생각나네요... 그냥 JSON 형식으로 저장되는게 맞는 것 같습니다.

 

UserDefaults는 싱글톤객체로 생성해 줄 필요는 없습니다. 디자인 패턴은 3학년 때 천천히 배우기로...

 

이제 사용법을 알아보겠습니다!

func saveTasks() {
    let data = self.tasks.map { 
        [
            "title": $0.title,
            "done": $0.done
        ]
    }
    let userDefaults = UserDefaults.standard //UserDefaults 접근
    userDefaults.set(data, forKey: "tasks") //key를 통해 저장
}


func loadTasks(){
    let userDefaults = UserDefaults.standard // UserDefaults 에 접근
    //data 불러오기
    guard let data = userDefaults.object(forKey: "tasks") as? [[String:Any]] else {return}

    self.tasks = data.compactMap{
        guard let title = $0["title"] as? String else {return nil}
        guard let done = $0["done"] as? Bool else {return nil}
        return Task(title: title, done: done)
    }
}

UserDefaults.standard로 UserDefaluts에 접근을 합니다.

 

set 메서드를 사용해 키와 데이터를 저장하고

object 메서드에 키를 넣어서 데이터를 가져옵니다.

 

위 코드에서는 배열로 되어있는 데이터를 저장하고 불러오면서 캐스팅을 해 주지만

단일 데이터는 더욱 간단하게 사용할 수 있습니다.

var isOn: Bool = true

UserDefaluts.standard.set(isOn, forKey: "switch")

print(UserDefaluts.standard.bool(forKey: "switch")) //true

 

 

userDefaults.removeObject(forKey: "tasks")

데이터를 삭제하는 법은 removeObject 메서드를 사용하여 키를 파라미터로 넘겨주면 삭제가 됩니다!

 

 

728x90

'IOS > UIKit' 카테고리의 다른 글

[IOS] DatePicker  (0) 2022.01.23
[IOS] Tab Bar Controller 사용법  (0) 2022.01.22
[IOS] Alert 알아보기  (0) 2022.01.13
[IOS] TableView 알아보기!  (0) 2022.01.12
[IOS] UIStackView 알아보기  (0) 2022.01.10
Comments