-
@AppStorage와 UserDefaults스유를 써봐유! 2021. 10. 17. 23:20728x90반응형
안녕하세요. iOS 개발자 에이든입니다!👦🏻
App에 간단하게 값들을 저장하고 싶을 때
사용하는 방법!!🤔
바로바로 UserDefaults!!!
이번 시간에는 UserDefaults와 iOS 14부터 새로 생긴
SwitUI의 AppStorage에 대해서 알아보겠습니다!
자 그럼 함께 뽀개봅시당!
UserDefaults
Apple에서는 "App을 실행하는 동안 지속적으로 key-value로 저장하는 사용자의 기본 Database에 대한 Interface"라고 설명을 했어요! 쉽게 말해 별도의 DB 없이 App에 내가 원하는 값을 어떤 Key와 함께 저장하고, 언제든 그 Key를 통해 값을 불러낼 수 있는 것이죠.
단, String, Bool, Int, Array 등 단일 Data를 저장하는 데에 적합하기 때문에 대량의 Data를 저장하고 싶다면 따로 Database를 만드는 것을 추천합니다!- 저장하는 방법
예시로 제 이름, 발 사이즈 및 사람인지 아닌지에 대한 값을 저장해볼게요ㅎㅎㅎ😆
UserDefaults.standard.set("Aiden", forKey: "name") UserDefaults.standard.set(275, forKey: "footSize") UserDefaults.standard.set(true, forKey: "isHuman")
- 불러오는 방법
저장하는 법과는 다르게 불러올 때는 Type에 따라 불러오는 법이 다릅니다!
값이 없는 경우에는 Array는 빈 배열을 반환하고, Int, Float, Double은 0을 반환합니다.
다만 String의 경우는 nil을 반환하기 때문에 꼭 Optional Binding을 해주어야 합니다!
let name = UserDefaults.standard.string(forKey: "name") ?? "" let footSize = UserDefaults.standard.integer(forKey: "footSize") let isHuman = UserDefaults.standard.bool(forKey: "isHuman")
- 삭제하는 방법
UserDefaults.standard.removeObject(forKey: "footSize")
이런 UserDefaults를 SwiftUI에서는 AppStorage라는 것으로 좀 더 쉽게 사용할 수 있습니다.
한번 살펴보시죵~!
AppStorage
앞서 살펴본 @State와 같은 Property Wrapper로 UserDefaults의 값을 반영하고 변경하는 역할을 합니다.
바로 예시를 한번 보도록 합시다!
import SwiftUI struct ContentView: View { @AppStorage("isOn") var isOn: Bool = UserDefaults.standard.bool(forKey: "isOn") @AppStorage("text") var text: String = UserDefaults.standard.string(forKey: "text") ?? "" var body: some View { VStack { Toggle("Switch", isOn: $isOn) .padding(EdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10)) .border(Color.black, width: 1) .frame(width: UIScreen.main.bounds.width - 60) TextField("Text", text: $text) .padding(EdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10)) .border(Color.black, width: 1) .frame(width: UIScreen.main.bounds.width - 60) } } }
짠!!!! 어떤가요?
이렇게 별도의 Set 없이 그저 값을 바꾸는 것만으로 반영이 됩니다!
간단하죠?ㅎㅎ
오늘은 UserDefaults와 AppStorage에 대해서 알아보았습니다.
간단한 설정 같은 것들을 저장할 때 상당히 유용하게 사용할 수 있는 녀석들이에요
잘 써먹으면 상당히 유용하겠죠?ㅎㅎㅎㅎ
그럼 오늘은 여기까지~!!
혹시라도 부족하거나 잘못된 부분 그리고 질문 있으시면 언제든 댓글 부탁드려요! 감사합니다!👦🏻👋🏻
728x90반응형'스유를 써봐유!' 카테고리의 다른 글
NavigationView, NavigationLink (0) 2021.09.26 Text Attributed (1) 2021.09.13 @State, @Binding, @ObservedObject, @EnvironmentObject (0) 2021.09.05 Custom TabBar (0) 2021.08.15 Prologue (1) 2021.08.01