티스토리 뷰

TIL

[TIL] 2022 /07 / 23

희철 2022. 7. 23. 23:54

UserDefaults로 구조체 저장

 

 

구조체를 UserDefaults에 저장하기 위해서는 인코딩, 디코딩 필요

-> 해당 구조체가 Codable을 채택해야함.

 

다시말해, 구조체 데이터를 인코더를 통해 인코딩한 값을 UserDefaults에 저장하고, 디코더를 이용해서 디코딩을 한 구조체 데이터를 불러오는 방식으로 진행됨.

 

 

인코딩

let encoder = JSONEncoder()
if let encoded = try? encoder.encode(tamagotchiData) {
    UserDefaults.standard.setValue(encoded, forKey: "person")
    print(encoded)
}

인코딩된 데이터

 

디코딩

// 디코딩해서 데이터가져오기
if let savedData = UserDefaults.standard.object(forKey: "tamagotchi") as? Data {
    let decoder = JSONDecoder()
    if let tamagotchiData = try? decoder.decode(Tamagotchi.self, from: savedData) {
        print(tamagotchiData) // Person(name: "jake", age: 20)
    }
}

바이트로 표시된 데이터를 디코더를 통해 디코딩한 결과 위와 같이 원하는 구조체 형태로 값을 가져올 수 있음.

 

_____________________________________________________________________________________________________

 

다마고치 과제

 

 

-> 설정화면 UI 및 기능 구현

-> 이름 변경 화면 UI 및 기능 구현

-> 첫 화면 조건 구현

-> 상세화면, 선택화면 구현

-> 구조체 수정 및 추가

-> 메인화면 UI 구현

'TIL' 카테고리의 다른 글

[TIL] 2022 / 07 / 25  (0) 2022.07.26
[TIL] 2022 / 07 / 24  (0) 2022.07.24
[TIL] 2022 / 07 / 22  (0) 2022.07.23
[TIL] 2022 / 07 / 21  (0) 2022.07.21
[TIL] 2022 / 07 / 20  (0) 2022.07.21
댓글
최근에 올라온 글
Total
Today
Yesterday