티스토리 뷰
오늘은 UserDefaults에 대해 알아보겠습니당.
UserDefaults
1. 데이터를 저장하는 방법 중 하나
UserDefaults는 데이터를 저장하는 방법 중 하나라고 생각하면 될 것 같아요.
그렇다고 데이터베이스는 아니구요. 말 그대로 유저의 기본값? 같은 기능인거죠.
예를 들어, 최고 점수나 볼륨, 뮤직 on/off 등?
음악 앱을 이용할 때, 지난 번 볼륨이 유지되어 있쟈나여? 갑자기 볼륨 커지면 다들 핸드펀 떨구잖아여?!! 그런 기본값들을 저장해두고, 불러와서 사용하는 것이져.
2. 저장 형태
UserDefaults는 키-값의 쌍으로 저장이 되구요, swift의 기본타입(float, double, integer, bool, URLs)으로 접근할 수 있다구 해요.
3. 작은 데이터만 저장
키-값의 쌍으로 저장이 될 뿐만 아니라, 앱 실행 시 모든 list가 로드 되기 때문에 무거운 데이터를 저장하기에 적정한 장소가 아닌거져.
싱글톤
UserDefaults는 싱글톤 객체를 이용해서 접근할 수 있는데요.
싱글톤 객체는 단순하게 말하면 유일하게 존재하는 객체에요.
클래스에서 상속이다 뭐다 하면 객체가 여러개 생기고, 그 값이 변경되는 일이 많져.
그런데 이렇게 싱글톤 객체로 만들어서 사용하면 오로지 그 객체만 이용해서 접근할 수 있기 때문에, 문제가 생기기 적답니다.
(다음편에 싱글톤 다뤄봐야지,,,나도 공부해야지,,,)
만약 게임 앱에서 최고 점수를 UserDefaults로 저장하고자 하는데, 그 객체가 여러개 생겨서 여기저기서 바꾸면 굉장히 곤란하겠져? 그래서 싱글톤을 사용하는 것 같아요.
코드로 한 번 보는 게 낫겠져?
import UIKit
let defaults = UserDefaults.standard // 싱글톤 객체
우선 defaults라는 객체를 하나 만들어서 계속 사용하게 될 UserDefaults.standard를 할당해 줄게요.
이제 이 defaults에 값을 셋팅해주면 됩니당.
키 값은 전부 String 타입이네요! 잊지말기!!
위에서 말한 것처럼 string, int, float, bool 등 다양한 값으로 셋팅할 수 있게 해놨네용?
볼륨 값이라고 생각하고 셋팅해볼까요?
defaults.set(7.24, forKey: "Volume")
UserDefaults는 키-값의 쌍이라고 했죠? Volume이라는 key(키)에 7.24라는 value(값)이 저장된 거에요.
그럼 이 값을 어떻게 가져올까요?
다양한 메서드들이 있는데요. float 값이니까! 이 놈을 이용해볼게요.
func float(forKey defaultName: String) -> Float
volume이라는 상수에 할당한 후, 프린트를 해보면 우리가 위에서 셋팅한 값이 나온답니다.
let volume = defaults.float(forKey: "Volume")
print(volume)//7.24
음악 on/off 여부를 저장해볼까요?
defaults.set(true, forKey: "MusicOn")
let musicOn = defaults.bool(forKey: "MusicOn")
print(musicOn) //true
set메서드는 Any타입도 받기 때문에 Dictionary, Set 등과 같은 타입들도 값을 셋팅할 수 있다리!!
let dictionaryKey = "player"
let dictionary = ["score": "3"]
defaults.set(dictionary, forKey: dictionaryKey)
let player = defaults.dictionary(forKey: dictionaryKey)
print(player) //Optional(["score": 3])
그러나 값을 읽어올 때는 리턴 타입이 옵셔널이기 때문에 바인딩해서 사용해줘야겠쥬?!
주의하기!!
이렇게 UserDefaults를 간단하게 알아봤는디유!
데이터를 저장할 수 있는 방법이지만, 작은 데이터를 저장하기에 적합하다는 것!
값은 set으로 저장하고, 값은 타입명과 유사한 메서드로 얻어온다는 것!!
혹시 틀린 게 있다면, 알려주십셔!!
슨배님덜!!
'iOS 개발자 되기' 카테고리의 다른 글
[swift] 1. 랜덤 명언 생성기 만들기 (programmatically) (0) | 2022.03.17 |
---|---|
[swift] 데이터를 저장하는 방법 - UserDefaults 2 (연습) (0) | 2022.03.13 |
[swift] 감동란 만들기로 알아보는 노래 재생 (0) | 2022.02.16 |
[swift] 감동란 만들기로 알아보는 Timer (0) | 2022.02.07 |
[swift] Alamofire 걸음마 3 (Alamofire) (0) | 2022.01.30 |
- Total
- Today
- Yesterday