티스토리 뷰

(1) UserDefaults 


UserDefualts 클래스는 사용자의 기본적인 데이터베이스 인터페이스로 key 키 value 값을 쌍으로 저장합니다.

작은 범위의 데이터를 저장하는 용도로 사용하는 거라 사실상 데이터베이스라 말하는 것도 조금 그렇지만 ..ㅎ 

여하튼 UserDefaults는 런타임 중 객체를 사용해서 사용자의 데이터베이스에서 사용하는 기본값을 읽습니다. 


유저 디폴트는 값을 필요로 할 때마다 사용자의 기본 데이터베이스를 열지 않아도 가능하게 정보를 캐시 합니다.


실제로 간단하게 사용할 수 있어서 자주 사용합니다.


저 같은 경우에는 회원가입의 사용자 정보를 담거나 버튼의 토글 상태를 담거나 등 유저 디폴트를 사용합니다.



- 사용 방법은 아주 간단합니다.


먼저 사용자의 표준 유저 디폴트 객체를 가져오기 위해 (standard)

let userInfo = UserDefaults.standard로 선언해주고


값을 넣어줄 때는 .set, .setValue로 원하는 타입의 벨류와 키를 넣어줄 수 있습니다.



값을 넣어줄 수 있는 것은 Any, Float, Double, Int, Bool 등 다양한 값으로 저장 가능합니다.


array 또한 저장 가능합니다.


* 날짜도 저장 가능합니다.

userInfo.set(Date(), forkey: "NowDate")

* 딕셔너리도 저장 가능합니다.

let dictionary = ["name": "hyeri"]

userInfo.set(dictionary, forkey: "myDict")

꺼낼 때는 userInfo.dictionary(forkey: "myDict") 이렇게 꺼낼 수 있습니다.



저장했던 값을 가져옵니다.



값을 가져오는 것 또한 여러 타입으로 가져올 수 있습니다.  종류 많아요!


삭제할 때는 removeObject로 키값을 입력해주시면 해당하는 키를 찾아 삭제해줍니다.


간단하게는 삽입, 삭제, 값 가져오기를 많이 쓰는데 기본 클래스에서 notification 등 다양하게 제공합니다.







UserDefault는 작은 데이터를 저장할 때 사용하기 때문에 딕셔너리나 배열을 사용할 때는 사이즈가 점점 커지기 때문에 조심해야 합니다.


처음에 제가 iOS 했을 때 UserDefault를 데이터 베이스처럼 막 사용했습니다 :-(

유저 디폴트는 사용하기 전에 데이터를 모두 동기화해서 로드하기 때문에 데이터베이스처럼 사용하게 되면 비효율적입니다.

또한 앱 실행 속도에도 영향을 끼칩니다.

예를 들어 사용자가 버튼에 대한 토글을 확인하려고 했는데 유저 디폴트를 전체를 로드하는 경우. 하나의 값을 확인하면 되는데 전체를 읽어버리니 유저 디폴트에는 딱 필요한 데이터를 넣는 게 가장 좋다고 생각합니다.


UserDefault 결론

사용하기가 편리하고 싱글톤이라 모든 곳에서 접근 가능한 장점이 있습니다.

단점은 표준 데이터만 저장 가능하고 커스텀 한 object는 저장이 불가합니다.

(커스텀 한 object를 저장하는 경우에는 plist 파일을 따로 만들어서 저장해주는 별도의 방법이 있긴 합니다.)


자세한 내용은 developer documentation을 참고하세요 ! 


'Tech > iOS' 카테고리의 다른 글

iOS 로컬 데이터 저장 (2) CoreData  (0) 2018.10.17
iOS Photos 프레임워크 사용  (0) 2018.10.08
iOS ActivityViewController 공유하기  (0) 2018.09.21
iOS CoreLocation 위치 파악하기  (0) 2018.08.31
iOS 앱 리뷰 SKStoreReviewController  (0) 2018.08.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함