[IOS] UserDefault 사용해보기

2022. 7. 17. 22:50·IOS

간단한 예제를 통해 UserDefault를 사용해보고 작성한 코드를 리뷰하는 글입니다.


1. UserDefault란

  • 앱에 대한 사용자의 데이터를 저장하는 애플의 기본 저장소
  • 앱 마다 존재하며 샌드박스 시스템에 의해 관리됨
  • 주로 푸쉬 알람 허용과 같은 사용자의 환경설정 값 등 가벼운 데이터가 저장됨
  • key-value 쌍의 형태로 데이터가 저장됨

2. 예제

1) 감정 다이어리

  • 9가지 감정을 열거형 case로 정의
  • 열거형의 rawValue를 UserDefault의 key로 사용
  • 화면 로딩 시 감정별로 저장된 value를 읽어서 각 버튼의 타이틀에 보여줌
  • 버튼 터치 시 value+1 을 새로운 값으로 저장하고 버튼 타이틀을 변경
@IBAction func touchButton(_ sender: UIButton){
        
        sender.setTitle(getString(currentTitle: sender.currentTitle!), for: .normal)
        
    }

func getString(currentTitle: String) -> String {

        let key = String(currentTitle.split(separator: " ")[0])
        
        let count = UserDefaults.standard.integer(forKey: key)
        
        UserDefaults.standard.set(count+1, forKey: key)
        
        return key + " \(UserDefaults.standard.integer(forKey: key))"
        
    }

 

2) 기념일 계산기

  • UIDatePicker 값 변경 시 오늘 날짜로부터 특정 일(day) 수가 경과된 날짜를 계산하고
    DateFormatter로 변환된 날짜를 하단의 4개의 뷰에 보여줌
  • 뷰를 길게 누르면 표시된 날짜를 저장하거나 기존에 저장된 날짜 삭제 가능
  • 뷰 로딩 시 저장된 날짜(문자열)를 불러와서 하단 뷰에 보여줌
// UIDatePicker Value Changed Action
@IBAction func changePickerValue(_ sender: UIDatePicker) {
        
        let dateFormat = DateFormatter()
        dateFormat.dateFormat = "yyyy년 MM월 dd일"
        
        for view in memorialViews {
            view.dateLabel.text = dateFormat.string(from: sender.date.addingTimeInterval(TimeInterval(view.tag*100*60*60*24)))
        }
    }
    
@IBAction func pressMemorialView(_ sender: UILongPressGestureRecognizer) {
        
        guard let key = sender.view?.tag else { return }
        
        let alertController = UIAlertController(title: "이 날짜를 기념일로 등록하시겠습니까?", message: "", preferredStyle: .actionSheet)
        
        alertController.addAction(UIAlertAction(title: "삭제", style: .destructive, handler: { _ in
            UserDefaults.standard.removeObject(forKey: "\(key)")
            self.memorialViews[key-1].dateLabel.text = nil
        }))
        
        alertController.addAction(UIAlertAction(title: "등록", style: .default, handler: { _ in
            let value = self.memorialViews[key-1].dateLabel.text
            UserDefaults.standard.set(value, forKey: "\(key)")
            //            print(UserDefaults.standard.string(forKey: "\(key)"))
        }))
        
        alertController.addAction(UIAlertAction(title: "취소", style: .cancel))
        
        present(alertController, animated: true)
        
    }

 


전체 코드 : https://github.com/Lieutenant-K/SesacIOS-EmotionDiary.git

 

GitHub - Lieutenant-K/SesacIOS-EmotionDiary

Contribute to Lieutenant-K/SesacIOS-EmotionDiary development by creating an account on GitHub.

github.com

저작자표시 (새창열림)

'IOS' 카테고리의 다른 글

[IOS] CocoaPod의 pod install 오류에 대하여  (0) 2022.09.09
[IOS] UIView의 tintColor 프로퍼티에 대하여  (0) 2022.07.27
[IOS] 열거형을 사용해서 간단한 앱 만들어보기  (0) 2022.07.17
[IOS] AutoLayout으로 현업의 서비스 화면 구성하기  (0) 2022.07.17
[IOS] 스플래시 화면과 다크모드 대응 화면 만들기  (0) 2022.07.16
'IOS' 카테고리의 다른 글
  • [IOS] CocoaPod의 pod install 오류에 대하여
  • [IOS] UIView의 tintColor 프로퍼티에 대하여
  • [IOS] 열거형을 사용해서 간단한 앱 만들어보기
  • [IOS] AutoLayout으로 현업의 서비스 화면 구성하기
무슈후슈
무슈후슈
코딩은 창작이다.
  • 무슈후슈
    감성코드
    무슈후슈
  • 전체
    오늘
    어제
    • 분류 전체보기 (119)
      • 알고리즘 (30)
      • IOS (24)
      • Swift (4)
      • TIL (41)
      • CS (15)
      • 메모 (2)
      • 시플 (1)
      • RxSwift (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MVVM
    Realm
    프로그래머스
    비동기
    그리디
    python
    그래프 탐색
    http
    codable
    풀이
    코딩테스트
    파이썬
    github
    ios
    알고리즘
    SWIFT
    백준
    git
    다이나믹 프로그래밍
    이분 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
무슈후슈
[IOS] UserDefault 사용해보기
상단으로

티스토리툴바