Swift

Swift UserDefaults

pockpock 2024. 7. 11. 11:49
UserDefaults

 

 

저번 포스팅 코어 데이터(Core Data)와 내용이 이어집니다!

https://daesungstudy.tistory.com/94

 

 

UserDefaults 또한 디스크에 데이터를 저장할 수 있게 돕는 도구임

 

특징으로는

Core Data 보다 사용성이 간단 함

 

대량의 데이터를 담을때에는 Core Data가 적절하지만,

비교적 단순한 데이터를 담는 데에는 UserDefaults가 적절하다.

 

그러면 UserDefaults의 CRUD에 대해서도 알아볼까?


import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // CRUD : C
        UserDefaults.standard.set("010-3213-2432", forKey: "phoneNumber")
        
        // CRUD : R
        let phoneNumber = UserDefaults.standard.string(forKey: "phoneNumber")
        print("저장된 전화번호: \(phoneNumber)")
        
        // CRUD : U
        // 같은 키에다가 set 을 하면 됨.
        UserDefaults.standard.set("010-6666-7777", forKey: "phoneNumber")
        let newPhoneNumber = UserDefaults.standard.string(forKey: "phoneNumber")
        print("바뀐 전화번호: \(newPhoneNumber)")
        
        // CRUD : D
        UserDefaults.standard.removeObject(forKey: "phoneNumber")
        print("전화번호가 남아있는가: \(UserDefaults.standard.string(forKey: "phoneNumber"))")
    }
}

 

 

요렇게 간단하게 표현할 수 있음

Core Data 파일을 만들고, entity를 지정하고, attribute를 지정하고 코드 제너레이트 하고...

NSpersistentContainer를 사용해서 데이터를 불러오는 과정보다는

이게 더 훨씬 더 플로우가 간단하죠?

 

근데 한 가지 알아야 할 점이 있음

UserDefaults 안에는 원시타입 "int, string, bool"밖에 못 들어감...

 

Q -> 그러면 Class, struct 안에 있는 값 들은 UserDefaults 안에는 못 넣는거야?

그건아님. JSON을 통해 "인코딩"해서 값을 넣어줄 수 있긴함

 

이외의 내용들은 더 공부해서 내용 채워 넣겠슴당!