Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Protocol
- c++
- 운영체제
- composable architecture
- 알고리즘
- 컴퓨터그래픽스
- 네트워크
- 웹
- spritekit
- swift concurrency
- 대외활동
- Swift
- 문법
- 리액트
- 스유
- dispatchqueue
- 스위프트
- 후기
- 백준
- 영남대
- widget
- ReactorKit
- 멋사
- cs
- SwiftUI
- TCA
- uikit
- 멋쟁이사자처럼
- 위젯킷
- widgetkit
Archives
- Today
- Total
맛동산이
Swift) Appstorage와 userDefault 본문
InterFace
인터페이스란 서로다른 두 시스템의 데이터를 주고 받는 경계면을 의미한다.
UserDefaults
앱을 실행하는 경우 지속적으로 key-value로 값을 저장하는 사용자의 기본 데이터 베이스 인터페이스 이다.
즉 앱을 실행하는 동안 사용자의 기본 데이터를 key-value값으로 저장하는 경계면을 의미한다.
런타임에서 userDefaults객체를 이용하여, 사용자의 기본 userDefaults DB에서 기본 설정값을 액세스 하며, UserDefaults는 해당 값을 캐시하여 기본 설정 디비를 열필요 없도록 계속해서 기기에서 값을 가지고 있게 된다.
기본값을 설정하면 프로세스 내에서 동기적으로 변경되며, 비동기적으로 다른 프로세스에 변경사항이 전파된다.
UserDefault는 싱글톤으로 단하나의 객체만이 앱내에 존재한다.
userDefauls 데이터 저장하기
UserDefauls.standard.set("값", key: "키이름")
위에서 언급했듯이 UserDefaults는 싱글톤으로 되어있기 때문에 UserDefaults라는 클래스의, standard인스턴스로 접근해야한다.
거기에서 set 함수를 사용해서 값을 저장하게 된다.
UserDefaults 데이터 가져오기
UserDefaults.standard.string(forKey: "키값") UserDefaults.standard.integer(forKey: "키값") UserDefaults.standard.float(forKey: "키값")
UserDefualts 데이터 삭제하기
UserDefaults.standard.removeObject(forKey: "키값")
AppStorage
AppStorage는 프로퍼티 래퍼로 UserDefaults 값의 변화를 뷰가 감지하여 화면이 리렌더링 되도록 한다.
즉 기존의 UserDefualts를 사용해서 @State 프로퍼티 래퍼를 통해서 화면을 리렌더링 해줬다면 iOS 14부터는 앱스토리지를 사용하면 된다.
@State private var count = UserDefaults.standard.integer(forKey: "cliked") 위의 코드와 동일하게 작동함. @AppStorage("키값") private var 변수명 = "값"
반응형
'앱 > Swift' 카테고리의 다른 글
Swift) Swift concurrency가 나온 배경에 대해서, thread와 GCD의 한계점 (2) | 2023.08.28 |
---|---|
Swift) rethrows란 (0) | 2023.08.28 |
Swift) Collection과 iteratorProtocol, Sequence, AsyncSequence을 왜 채택하는가?(feat. AsyncStream) (0) | 2023.08.28 |
Swift) 소수점 다루기 (0) | 2023.08.18 |
Swift) Task, TaskGroup, .task와 dispatchQueue (0) | 2023.07.04 |