Storage 클래스는 뭐하는 놈들일까?
우리는 이전에 TodoManager에서 saveTodo()와 retrieveTodo()를 정의 하였다. 이 메소드들은 todos에 존재하는 객체들을 json파일이라는 형식으로 Read/Write할 수 있는 기능을 한다. 그리고 그 json 파일을 실제 내 디스크에 저장하도록 Read/Write하는 기능을 한다.
현재 데이터는 Todo형식으로 되어있고, 데이터는 TodoManager관리하고 있다. 그런데 이 데이터들은 CRUD와 같이 변화가 생겼을 때 상태들을 디스크에 저장하고 저장된 데이터를 불러와야 할 것이다.
TodoManager에서는 add, delete, update를 하게 되면 saveTodo()를 호출하여 디스크와의 싱크를 하게 된다.
saveTodo()에서 하는 일은 무엇일까? 현재 todos 데이터 리스트를 받아서 json으로 쓰는 역할을 한다.
JSON
JSON 은 IT산업에서 제일 많이 사용하는 데이터 타입이다.
혼자든 협업이든 회사에 들어가든 데이터를 주소받는 경우가 있을 것이다. (주로 서버와의 데이터 전송)
이때 거의 json형식으로 된 데이터를 주고받게 될 것이다.
json의 파일의 형식은 위의 사진과 같고
swift에서는 json이 [String: Any]와 같이 Dictionary형식으로 판단한다.
이렇게 .json 파일은 서버에서 받게되면 이것도 하나의 파일이기에 데이터 형태로 만들 수 있다.
여기서 이 데이터를 parsing을 하게 된다.
Parsing은 위의 파일을 swift가 알아먹을 수 있는 형태의 object로 만드는 것이다.
어떤 문장을 분석하거나 문법적 관계를 해석하는 행위이며 이 바뀐 object를 이용해서 앱 내에서 사용하게 된다.
Parsing (파싱) 이란? Parser (파서) 란?
출처: https://na27.tistory.com/230 [na27]
이전에는 parsing을 하는 과정은 손이 많이 가는 작업이었다.
But Codable이 등장하면서 Parsing이라는 길고 노가다같은 작업을 할 필요가 없게 된 것이다.
Codable은 json파일로 된 데이터를 Swift가 알아먹는 type으로 parsing을 하는데, Key들이 struct의 property와 매핑시켜준다.
결론적으로, Codable을 이용해서 swift메모리에 있는 데이터 형태를 json형태로 바꾸는 것이 가능해졌고, 그 json파일을 디스크에 Read/Write하는 작업을 Storage에서 해준 것이다.
자! 정리하자!
우리는 연관되어 있는 데이터를 struct를 이용해서 새로운 type을 정의할 수 있었다.
여기서 struct가 Codable 이라는 protocol을 따르게 되면 아주 쉽게 “struct형태 데이터”를 “json형태 데이터”로 바꿀 수 있고 그 반대도 가능하다. 즉 데이터 형태의 전환이 쉽게 만들어 준 것이 Codable이다.
Codable을 좀더 살펴보면,
Codable은 Decodable과 Encodable의 합쳐진 형태이다.
Encodable: struct 형태 데이터를 json 형태 데이터로
Decodable: json 형태 데이터를 struct 형태 데이터로
여기서 json이 된 파일을 디스크에 Read/Write하는 것은 Storage에서 수행하게 되는 것이다.
이때 쉽게 사용하도록 만들어져 있는 놈이 FileManager이다.
결국은 이러한 작업 모두 Storage 클래스 내부에서 수행할 것이다.
요정도면 이론은 됐고 이제 구현하러 가보자.
'Toy Project > To Do List (iOS)' 카테고리의 다른 글
10. input text View 만들기 (0) | 2021.03.12 |
---|---|
9. Storage 구현 (0) | 2021.03.09 |
7. TodoListCell 완성 (0) | 2021.03.09 |
6. View Model (0) | 2021.03.08 |
5. Todo, TodoManager (0) | 2021.03.07 |