티스토리 뷰
오늘은 UserDefaults에 대해 공부 해볼게요!
UserDefault란 간단한 데이터를 저장할때 사용하는 로컬 데이터 저장소 라고 보시면 되는데요!
즉, 사용자의 핸드폰에 저장하는거죠.
간단한 데이터라 하면 이런게 있어요.
- 앱 최초실행 기록 저장
- 사용자 기본설정 등
사용법
UserDefaults는 사용자의 기본 데이터베이스를 key-value 쌍으로 저장하는 인터페이스입니다.
이때 key의 값은 String(문자열)로 저장을 합니다.
아래 코드를 보시죠.
//값 저장
UserDefaults.standard.set(value: Any?, forKey: String)
//값 불러오기
UserDefaults.standard.string(forKey: String)
// UserDefaults.싱글톤.불러오고자 하는값의 타입(forKey: key의 타입)
값을 저장할 때는 value의 타입을 지정할 수 있어요.
사용법은 알았으니 직접 해보면서 익혀보죠!
예제
초기세팅된 소스코드는 여기 있어요
먼저 앱을 실행하면 아래 처럼 나올텐데요.
textField에서 값을 입력후 Button을 누르면 기본값(label)이 입력했던 값으로 변경 되게 해놓았습니다.
해볼까요 ?
근데 앱을 껏다 켜거나, 화면전환(navigation)을 하게 되면 다시 원상복구가 됩니다..
우리가 원하는건 데이터가 저장 되어야 하잖아요? 이럴때 사용하는게 UserDefaults 인데요!
사용법은 위에서 보셨죠 !? 그대로 가져와서 사용해봅시다.
(아래코드를 따라 쳐보시면 이해가 더 잘됩니다!!)
// ViewController
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var label: UILabel!
// 상수 처리
let defaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
// 값 불러오기
let getTextValue = defaults.string(forKey: "textValue")
// getTextValue가 nil이면 label에 "기본값" 보여주기
label.text = getTextValue ?? "기본값"
}
@IBAction func saveData(_ sender: Any) {
// textField에 적힌 글을 label에 보여주기
label.text = textField.text
// textField에 있는 글 저장
defaults.set(textField.text, forKey: "textValue")
}
위에서 UserDefaults에 관한 코드를 파헤쳐 보자면
1. Button을 누르면 textField에 입력된 값을 "textValue"라는 key에 저장하게 됩니다.
2. viewDidLoad(화면이 렌더링 된 후) key: "textValue" 저장되어 있었던 값을 가져와 label에 보여줍니다.
결과화면
최종 소스코드는 여기 있습니다. 😊
도움이 되었길 바랍니다 !! 어느덧 2021년 마지막 날이네요.
다들 연말 마무리 잘하시고 내년에는 더 좋은일들만 가득하길 !! ㅎㅎㅎ
'iOS' 카테고리의 다른 글
[Swift] removeLast() , popLast() 차이점 (0) | 2022.01.06 |
---|---|
[iOS] GCD (Grand Central Dispatch) (0) | 2022.01.05 |
[Swift] 콜렉션 타입 1-3 (Collection Types) - Dictionaries (0) | 2021.12.31 |
[Swift] 콜렉션 타입 1-2 (Collection Types) - Sets (0) | 2021.12.29 |
[Swift] 콜렉션 타입 1-1 (Collection Types) - Arrays (0) | 2021.12.26 |
- Total
- Today
- Yesterday
- Swift Leetcode
- Class
- Swift RIBs
- 원티드 프리온보딩
- RTCCameraVideoCapturer
- Swift 내림차순
- Swift 프로그래머스
- CS 네트워크
- Swift joined()
- Swift ModernRIBs
- Swift final
- swift reduce
- swift (programmers)
- 2023년 회고
- Swift 프로퍼티
- removeLast()
- Swift init
- iOS error
- ios
- RIBs tutorial
- Swift
- swift protocol
- Combine: Asynchronous Programming with Swift
- Swift inout
- Swift Error Handling
- swift 고차함수
- swift programmers
- Swift joined
- swift property
- Swift 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |