UserDefault

YongJunCha·2021년 9월 13일
0

swift

목록 보기
7/18
post-thumbnail
  • What is UserDefault

    UserDefaults는 App 시작시 사용자의 기본 데이터베이스를 키-값 쌍으로 지속적으로 저장하는 인터페이스이다.

최근 지라에서 issue를 등록하는 api를 연동중인데.
rest api get을 이용해 불러올 때 해당 issue에 관한 Id 값이 필요했다.
이슈를 등록할 때 마다 response 값으로 해당 issue에 해당하는 Id 값이 반환 되서, 그 때 마다 반환된 Id 값을 저장해주려고 생각했다.

그런데 간단한 값의 저장을 하면서 DB에 접근하거나 Entity를 만들어 주는 것 또한 낭비라고 생각했고, 검색 후 UserDefault라는 방법을 알아냈다.

⚠️

이 방법의 주의 점은 100kb 이상의 데이터를 저장할 때는 사용하지 않는 것을 권고하고 있고, 많은 사람들이 하는 실수는 UserDefault에 너무 많은 데이터를 저장해 앱의 로딩 속도를 저하시키는 치명적인 오류를 범한다고 주의를 주고있다.

사용하는 방법은 아래와 같이 간단하다.

let defaults = UserDefaults.standard

새로운 인스턴스 클래스를 위와 같이 만들어주고

let defaults = UserDefaults.standard
defaults.set(25, forKey: "Age")
defaults.set(true, forKey: "UseTouchID")
defaults.set(CGFloat.pi, forKey: "Pi")

위와 같이 set을 사용해 나중에 참조에 쓸 키와 값을 설정해 줄 수 있다.
개인적으로 이번 프로젝트에서는 배열로 써야해서 배열과 딕셔너리 방식 까지 알아봤다.

let array = ["Hello", "World"]
defaults.set(array, forKey: "SavedArray")

let dict = ["Name": "Paul", "Country": "UK"]
defaults.set(dict, forKey: "SavedDict")

풀어서 쓰고 싶다면 아래와 같이 쓰면 된다.

let array = defaults.object(forKey:"SavedArray") as? [String] ?? [String]()
let dict = defaults.object(forKey: "SavedDict") as? [String: String] ?? [String: String]()

경험하고 보니 정말 쓰기도 쉽고 좋은 기능이라 남용하고 싶은 욕구가 솓을 것 같다.
꾹꾹 참고 꼭 필요한 데이터만 쓰도록 각별한 노력이 필요하겠다.

0개의 댓글