Toy Project/To Do List (iOS)

9. Storage 구현

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

Storage 구현

뼈속까지 이해한다기 보다는

전체적인 큰 틀과 어떻게 구성되어 있는지를 중점으로 봐라잉~

 

 

https://developer.apple.com/documentation/foundation/filemanager

 

Apple Developer Documentation

 

developer.apple.com

 

https://zeddios.tistory.com/440

 

iOS ) FileManager를 이용해 파일/폴더 만드는 법

안녕하세요 :) Zedd입니다. 제목이 뭔가 추상적인데.....이 글은...저를 위한....공부... FileManager를 이용해 파일/폴더 만드는 법 파일 및 디렉토리와 관련된 가장 기본적인 작업 중 일부는 파일 시스

zeddios.tistory.com

 

https://hcn1519.github.io/articles/2017-07/swift_file_manager

 

Swift로 파일 다루기

Swift의 FileManager를 이용하여 Local에 있는 File들을 다루는 법에 대해 알아봅니다.

hcn1519.github.io

 

 

 

 

 


 

 

 

Apple문서에 의하면 사용자에 의해 생성되는 모든 Contents는

Documents directory에 저장되도록 권장(강제?)하고 있다.

우리는 파일을 저장하고 싶기에 documentDirectory 안에 저장되어야 할 것이다.

그렇다면 documentDirectory가 어딨는지 아는 것이 우선일 것이다.

따라서 처음 할 것은 Document Directory URL을 얻기위한 코드이다.

 

우선 Directory를 enum으로 선언하였는데, 여기에는 서로다른 documents, caches 케이스가 존재한다.

이 안에는 url이라는 computed property가 존재하는데 Directory의 종류에 따라 FileManager.SearchPathDirectory의 타입을 갖는 path의 값을 변경한다. 우리는 documentDirectory를 사용할 것이다.

여기서 FileManager.default가 등장하는데

default는 FileManager의 Singleton instance를 만들어 주는 것이다.

 

urls라는 메소드는 요청된 도메인에서 지정된 공통 디렉토리에 대한 URL 배열을 리턴해주는 메소드이다.

첫번째 파라미터 for은 검색 경로 디렉토리이다.

두번째 파라미터 in은 Domain을 나타낸다.

 

 

 


 

 

 

 

 

appendingPathComponent() : 우리가 가져왔던 DocumentURL에 파라미터로 받은 path component를 추가한 것을 URL로 반환하는 메소드 이다. --> 한마디로 파일을 쓰게되는 path(경로, 위치)를 의미하는 것이다.

 

여기서 JSONEncoder를 생성한다. 우리는 데이터를 JSON파일로 쓸것이니까!

그러면 encode함수에 Todo데이터를 넣게되고 현재 파일이 존재하는지를 확인하게 된다.

파일이 존재하면 지워버리고 다시 생성하는 것이다. 

사이에 오류가 발생하면 catch하도록 예외처리까지 하였다.

 

 

 


 

 

 

 

밑의 코드의 경우 반대의 경우거나 비슷한 경우이기에 설명은 생락하도록 한다.

 

 

 

 


 

 

 

Todo 객체만을 위한 saveTodo와 restoreTodo를 생성하였고, Test용 메소드를 만들었다.

 

 

 

 

 

 

'Toy Project > To Do List (iOS)' 카테고리의 다른 글

11. Keyboard  (0) 2021.03.14
10. input text View 만들기  (0) 2021.03.12
8. Storage 이론  (0) 2021.03.09
7. TodoListCell 완성  (0) 2021.03.09
6. View Model  (0) 2021.03.08