UserDefaults & @AppStorage

June·2023년 2월 7일
1

Swift

목록 보기
1/18
post-thumbnail

UserDefaults

  • DB없이 원하는 값을 앱에 Key-Value 형식으로 저장
  • 사용자 기본 설정과 같은 단일 데이터 저장에 적합

값 저장하기

// 이름 저장(String)
UserDefaults.standard.set("June", forKey: "name")

// 폰번호 저장(Int)
UserDefaults.standard.set(01011112222, forKey: "phoneNumber")

// 개발자인지 아닌지 저장(Bool)
UserDefaults.standard.set(true, forKey: "isDeveloper")

값 가져오기

// String 값 가져오기
let name = UserDefaults.standard.string(forKey: "name") ?? "" 

// Int 값 가져오기
let phoneNumber = UserDefaults.standard.integer(forKey: "phoneNumber")

// Bool 값 가져오기 
let isDeveloper = UserDefaults.standard.bool(forKey: "isDeveloper")

값이 없는 경우?
String = nil 반환, 옵셔널 바인딩 필수
Int, Float, Double = 0 반환
Array = 빈 배열 반환

값 삭제하기

UserDefaults.standard.removeObject(forKey: "name")



@AppStorage

  • iOS14 이상, SwiftUI의 새로운 프로퍼티 래퍼
  • UserDefaults를 SwiftUI의 @State처럼 사용 가능
  • 앱 스토리지에 저장된 값에 직접 바인딩하기 원할 때 사용
import SwiftUI

struct ContentView: View {
    @AppStorage("username") var username: String = UserDefaults.standard.string(forKey: "username") ?? "stranger"

    var body: some View {
        VStack {
            Text("Hello, \(username)😄")

            Button("Log in") {
                username = "June"
            }
        }
    }
}

위 코드처럼 값을 바꿔주는 것만으로 변경 완료됨.

profile
안다고 착각하지 말기

0개의 댓글