[TIL] 2022-04-19

선주·2022년 4월 19일
0

TIL

목록 보기
4/13

📌 UserDefaults

  • 기본적으로 제공되는 DB를 사용할 수 있는 인터페이스
  • key-value 쌍으로 저장됨
  • 싱글톤 패턴으로 설계되어 앱 전체에 단 하나의 인스턴스만 존재
  • 대용량 데이터를 저장할 때 사용하지 않고 자동로그인 여부, 아이디 저장, 환경설정 데이터값 등의 단일 데이터를 보관할 때 주로 사용
  • float, integer, double, boolean 등의 기본타입뿐만 아니라 NSString, NSNumber, NSData, NSDate, NSArray, NSDictionary 타입도 저장 가능

데이터 저장

첫번째 파라미터에 value, 두번째 파라미터에 key를 입력해 저장한다.
기존에 사용하던 key의 value값을 바꿀 때도 set을 통해 변경할 수 있다.

UserDefaults.standard.setValue(4, forKey: "month")
UserDefaults.standard.setValue(19, forKey: "day")
UserDefaults.standard.setValue("야곰", forKey: "name")
UserDefaults.standard.setValue(true, forKey: "attend")

데이터 사용

값이 없는 경우가 존재할 수 있으므로 nil 병합 연산자 ??나 guard let 구문을 사용해 대비하는 것이 좋다.

let month = UserDefaults.standard.integer(forKey: "month")
let day = UserDefaults.standard.integer(forKey: "day")
let name = UserDefaults.standard.string(forKey: "name")
let attend = UserDefaults.standard.bool(forKey: "attend")
        
print("\(month)\(day)\(name) 출석여부: \(attend)")

데이터 삭제

UserDefaults.standard.removeObject(forKey: "day")

📌 InstantiateViewController

주어진 Storyboard ID(withIdentifier에 들어가는 값)를 가지는 뷰 컨트롤러의 데이터를 초기화해 인스턴스를 메모리에서 해제하고, 새로운 뷰 컨트롤러 인스턴스를 생성하는 메소드이다.

때문에, instantiateViewController는 새로운 뷰로 넘어갈 때 사용해야 한다.

우리의 프로젝트에서는 QuestionViewController를 재사용하면서 안의 데이터만 바꿔치기해줄 것이므로 이 instantiateViewController를 사용하기에 적합하다.


📌 NavigationController 메소드

pushViewController

func pushViewController(UIViewController, animated: Bool)

해당 VC로 이동하고 VC Stack에 추가하는 메소드

popViewController

func popViewController(animated: Bool) -> UIViewController?

VC Stack에 쌓여있는 이전 VC로 이동하는 메소드. 현재 VC는 사라진다.

popToRootViewController

func popToRootViewController(animated: Bool) -> [UIViewController]?

navigationController에서 지정해놓은 Root VC로 이동하는 메소드. VC Stack에 쌓여있는 VC는 모두 사라진다.

popToViewController

func popToViewController(UIViewController, animated: Bool) -> [UIViewController]?

지정된 VC가 나올 때까지 VC Stack에 쌓여있는 VC들을 한꺼번에 pop하는 메소드


헤헤 오늘은 여기까지
이제 첫 외근하러 ~!


참고
Tistory | 개발새발 개발개발 / UserDefaults
Tistory | 미닛메이드 / InstantiateViewController
Tistory | 투데잇 / popViewController, pushViewController

profile
기록하는 개발자 👀

0개의 댓글