티스토리 뷰

TIL

[TIL] 2022 / 08 / 24

희철 2022. 8. 25. 01:25

SandBox

 

 

 

앱마다 각각 샌드박스 영역이라는 것이 있음.

 

샌드박스 안엔 Bundle ContainerData Container가 있음.

 

샌드박스 바깥으로는 벗어날 수도 없기 때문에 보안이 좋음.

 

앱을 실행할때마다 위치가 바뀜

 

Bundle Container

-> 앱의 번들

-> 파일, info.plist, 리소스 등을 그룹화

-> 작성한 코드들이 들어있음.

 

Data Container

-> documents, library, systemdata, tmp 네 가지의 폴더가 들어있음.

-> 개발자들이 직접 폴더를 새로 만들 수 없기 때문에 document의 서브 디렉토리를 사용해서 데이터 관리

-> document엔 주로 앱을 통해 생성한 이미지, 파일 등을 저장

-> library에는 사용자 데이터 파일과 임시 파일을 제외한 모든 파일을 관리

-> 알림음 같은 것도 라이브러리에 저장

 

 

 

Protocol을 이용해 데이터 전달

 

 

우선 프로토콜을 선언하고 메서드를 만들어줌.

 

데이터를 전달 받을 뷰컨트롤러에서 프로토콜을 채택하고 메서드를 완성시킴.

 

데이터를 전달할 뷰컨트롤러에서 선언해준 프로토콜을 타입으로 갖는 프로퍼티를 만들어줌.

 

데이터를 전달할 뷰컨트롤러에서 적절한 시기에 메서드 호출

 

이때, 까먹으면 안되는 것이 대리자를 지정해야함.

즉, 데이터를 전달 받을 뷰컨트롤러가 대리자가 되는 것.

 

 

 

FileManager

-> 따로 더 알아봐야함.

 

 

FileManager를 이용해 document 폴더에 이미지 저장

 

 

원래는 이미지를 스트링형태로 인코딩해서 realm에 같이 저장했었음.

 

이미지의 이름만 정해준다면 document폴더에 저장했다가 불러왔다가 할 수 있어서 굳이 인코딩하는 과정이 필요없음.

 

보통 document에 원본 이미지와 용량이 작은 이미지를 저장해서 나눠쓰는 경우가 많음.

 

 

저장하는 방법

 

 

우선, document폴더까지의 url을 알아야함.

 

다음으로, 파일을 저장할 세부 경로를 정해야함.

여기서 fileName은 매개변수로 둔 값이라서, ObjectID같은 PK값을 사용하면 될듯.

 

이제 여기서부터 이미지 저장, 로드, 삭제에 따라서 조금씩 다름.

 

저장

data는 압축시킨 이미지 파일을 갖고 있음. 이를 fileURL에 write을 이용해 저장.

 

 

로드

fileExists는 이미지파일이 존재하는지 확인하는 것.

 

보통 이 단계에서 기본 이미지를 지정해줌.

 

나는 색만 있는 이미지뷰를 사용할 것이기때문에 nil로 설정함.

 

만약 이미지 파일이 있다면 UIImage의 contentsOfFile을 이용해 이미지를 가져옴.

 

 

삭제

tasks에서 데이터를 지우고 보통 document까지 신경안쓰는 경우가 많다고함.

 

아래처럼 메서드를 만들어놓고 사용하면 될듯.

'TIL' 카테고리의 다른 글

[TIL] 2022 / 08 / 27  (0) 2022.08.28
[TIL] 2022 / 08 / 25  (0) 2022.08.26
[TIL] 2022 / 08 / 23  (0) 2022.08.24
[TIL] 2022 / 08 / 22  (0) 2022.08.23
[TIL] 2022 / 08 / 21  (0) 2022.08.22
댓글
최근에 올라온 글
Total
Today
Yesterday