ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • UserDefaults
    iOS/Wiki 2022. 1. 11. 22:54

    안녕하세요!! 이번엔 UserDefaults에 대해서 정리했습니다.

    이번 글도 노션에서 옮겨와 말이 짧습니다!! 양해해주세용😽


    UserDefaults란?

    Apple에서 제공해주는 Key:Value 형태의 기본 저장소

    단일 데이터 값을 저장하기에 용이하다.

    자동 로그인 여부, 알림 수신 여부, 인앱 결제 여부, 이메일, 닉네임, 성별 등 간단한 사용자 기본 설정에 사용된다.

    저장 시 plist(Property list) 형식으로 저장된다.

     

    프로그램의 실행이 종료되더라도, 사라지지 않는다. 하지만, 앱이 삭제된다면 데이터는 함께 사라진다.

    앱의 삭제 유무와 상관없이 데이터를 유지하고 싶다면, 백업/복구 기능을 지원하거나 KeyChain, iCloud 동기화 등의 기능을 통해 유지하기도 한다.

     

    UserDefaults에 값 저장하기

    let userDefaults = UserDefaults.standard
    // UserDefaluts.standard 계속 쓰기 귀찮으면 변수나 상수에 저장 가능!
    
    userDefaults.set("하하", forKey: "테스트1")
    userDefaults.set(10, forKey: "테스트2")
    userDefaults.set(1.0, forKey: "테스트3")
    userDefaults.set(false, forKey: "테스트4")

    UserDefaults에는 많은 set 메소드들이 있다.

    메소드의 이름은 같으나 매개변수, 리턴타입 등을 다르게 하여 함수를 중복으로 선언할 수 있다.(함수 오버로딩)

    Swift에서는 오버로딩을 허용하며, 함수 & 서브스크립트 & 생성자에서 사용할 수 있다.

    위 코드는 오버로딩을 활용해서 각각 String, Int, Double, bool 타입으로 UserDefaults 값을 저장하는 코드이다.

     

    UserDefaults에는 String, Float, Double, Integer 및 Boolean과 같은 기본 자료형 뿐만 아니라,

    NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary 유형의 객체를 저장할 수도 있다.

     

    UserDefaults에 저장된 값 가져오기

    if let test1 = userDefaults.string(forKey: "테스트1") {
                print(test1)
            }
            
            let test2 = userDefaults.integer(forKey: "테스트2")
            print("\\(test2)")
            
            let test3 = userDefaults.double(forKey: "테스트3")
            print("\\(test3)")
            
            let test4 = userDefaults.bool(forKey: "테스트4")
            print("\\(test4)")
    

    저장할 때 사용한 자료형으로 불러 올 수 있다.

    단, String타입은 옵셔널로 반환하므로, 옵셔널 바인딩을 해주어야한다.

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

    POP(Protocol-Oriented Programming) in Swift (1/2)  (0) 2022.03.28
    ReactorKit 사용기  (0) 2022.03.05
    Swift ARC(Automatic Reference Counting)  (0) 2022.01.15
    Localization  (0) 2022.01.14
    페이지네이션(Pagination)  (0) 2022.01.13

    댓글

Designed by Tistory.