Toy Project/To Do List (iOS)

8. Storage 이론

개발자킹콩 2021. 3. 9. 01:57

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 (파싱) 이란? Parser (파서) 란?

Parsing (파싱) 이란? Parser (파서) 란? Parsing 언어학에서 parsing은 구문 분석이라고도하며 문장을 그것을 이루고 있는 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정

na27.tistory.com

 

이전에는 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