SWIFTUI/Grammar

SwiftUI : UserDefaults 정보 수집 및 저장

서근 2021. 1. 24. 02:00
반응형

UserDefaults

UserDefaults 를 사용하여 사용자 설정을 저장 할 수 있습니다.

 

만약 어플에서 버튼으로 숫자를 4까지 올려놓고, 앱을 재실행 했을때 사용자가 눌렀던 카운트 4가 그대로 이어지는것을 볼 수 있습니다. 일단, 버튼을 눌렀을때 1씩 올라가는 화면을 만들어 보겠습니다.

struct ContentView: View {
    //tapCount는 0 으로 지정
    @State private var tapCount = 0
    
    var body: some View {
        
        Button("Tap count: \(tapCount)") {
           //버튼이 클릭될때마다 "1"씩 증가
           self.tapCount += 1
        }
    }
}

이제, UserDefaults를 이용해 정보를 수집하고 저장하는 코드를 만들어 보겠습니다.

 

우선 tapCount에서 설정해준 0을 밑의 코드처럼 수정해 줍니다.

@State private var tapCount = UserDefaults.standard.integer(forKey: "Tap")

그리고, 버튼 안에 UserDefaults.standard 값을 추가해 줍니다.

 UserDefaults.standard.set(self.tapCount, forKey: "Tap")

TIP
 
 

주의 
iOS는 데이터를 영구 저장소에 쓰는 데 약간의 시간이 걸립니다. 실제로 변경 사항을 기기에 저장하는 것이죠.
결과적으로 버튼을 탭한 다음 Xcode에서 앱을 빠르게 다시 실행하면 가장 최근 탭 수가 저장되지 않습니다.

전체 코드

struct ContentView: View {
    //@State private var tapCount = 0 을 밑에 코드처럼 수정해준다.
    @State private var tapCount = UserDefaults.standard.integer(forKey: "Tap")
    
    var body: some View {
        Button("Tap count: \(tapCount)") {
            self.tapCount += 1
            UserDefaults.standard.set(self.tapCount, forKey: "Tap")
        }
    }
}

 

읽어주셔서 감사합니다🤟