티스토리 뷰

반응형

안녕하세요. 도미닉입니다.

 

오늘은 스위프트에서 구조체 모델을 UserDefaults 에 저장하고 불러오는 방법을 공유하고자 합니다.

 

API 통신을 통해 JSON 을 많이 주고 받을 것입니다.

 

서버로부터 받은 JSON 을 모델 구조체로 변환하여 사용할 수 있습니다.

 

이 데이터를 현재 화면 말고 다른 화면들에서 혹은 다음 Flow 에서 사용하게 될 경우에 이 데이터를 UserDefaults 에 저장하고 필요한 뷰에서 불러와서 사용할 수 있습니다.

 

만약 이 구조체 모델을 바로 UserDefaults 에 저장하고자 하면 아래와 같은 오류가 발생합니다.

 

UserDefaults.standard.set(withdrawalFlow, forKey: "WithdrawalFlow")

이런 경우 아래와 같이 데이터 타입으로 변환하여 저장하면 잘 저장이 됩니다.

 

if let withdrawalFlowData =  try? JSONEncoder().encode(withdrawalFlow) {

  UserDefaults.standard.set(withdrawalFlowData, forKey: "WithdrawalFlow")

}

 

저장된 데이터는 아래와 같이 불러와서 다시 구조체로 변환을 해줘야 합니다!

 

guard let withdrawalFlowData = UserDefaults.standard.object(forKey: "WithdrawalFlow") as? Data, let withdrawalFlow = try? JSONDecoder().decode(WithdrawalFlow.self, from: withdrawalFlowData) else {

  return

}

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함