[TIL] UserDefaults 사용해서 팀 프로젝트 하기

남보경·2023년 8월 15일
0

TIL

목록 보기
8/10
post-thumbnail

사건의 발단...

이번 팀 프로젝트는 SNS 어플리케이션 만들기!
새로운 포스트를 작성하고 포스트들을 보여주는 feed 화면과 한 cell을 눌렀을 때 보이는 detail 화면 그리고 프로필 화면과 프로필 편집 화면 이렇게 5가지가 필요하다!

오늘은 그 중에서도 데이터를 UserDefaults를 활용해서 연결하는 방법을 적어보고자 한다.

💁🏻‍♀️ UserDefaults 초초초기본

우선 UserDefaults를 사용하기 위해서는 무조건 Foundation을 import 해야한다!

우리 팀의 경우 글 작성 - 메인에 View 반환 - detail에 View 반환 - 프로필 tableView에서 cell 반환 시에 동일한 데이터를 사용해야 했다.

때문에 같이 공유해야 하는 데이터를 지정하고 변수명이나 key값 혹은 storyboardID 같은 것은 notion에 적어서 협업하자고 제안하여 notion으로 같이 공유하고 있다.

변수명과 데이터 타입 그리고 키값은 아래와 같이 정했다.

  • 이미지명 : [String] - 변수명: postImgNames - key: "postImgNames"
  • 글 제목 : [String] - 변수명: postTitles - key: "postTitles"
  • 작성일 : [String] - 변수명: postDates - key: "postDates"
  • 내용 : [String] - 변수명: postContents - key: "postContents"

UserDefaults는 Dictionary 타입이기 때문에 key값을 이용해서 불러와야하며 UserDefaults에서는 String 타입만 Key 값이 될 수 있다.

< UserDefaults 사용법 >

📌 데이터 저장

let postTitles = ["오늘의 일기"]

UserDefaults.standard.set(postTitles, forKey = "postTitles")

// 인스턴스를 사용하면 좀 더 짧게 표현할 수 있다

let defaults = UserDefaults.standard
defaults.set(postTitles, forKey = "postTitles")

📌 데이터 사용

let arrayName = defaults.array(forKey = "postTitles")

// 옵셔널 처리 필요시
let arrayName = defaults.array(forKey = "postTitles") as? [String] ?? "nil일 때 표현할 문자"

💁🏻‍♀️ Date Picker 값의 Format 정하기(DateFormat())

작성일과 같이 date picker를 사용해서 데이터를 입력받을 경우 DateFomatter()를 사용하면 원하는 형태의 문자열로 반환받을 수 있다.

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd a h시 mm분" // 날짜 format 정하기
dateFormatter.amSymbol = "오전" // 오전 어떻게 표시할지
dateFormatter.pmSymbol = "오후" // 오후 어떻게 표시할지 
            
let 변수명 = dateFormatter.string(from: self.datepickerOutlet이름.date)
저장할변수명 = 변수명
profile
꿈꾸자 그리고 그것을 이뤄내자

0개의 댓글