광어네 맛집

[CoreData] 구조 및 위치에 대해서 _ 02 본문

Swift/About Swift

[CoreData] 구조 및 위치에 대해서 _ 02

Lautner Jacob 2022. 5. 31. 12:53
728x90
반응형

CoreData를 파다 보니까 포스팅하고 싶은게

자꾸 늘어나네요 ㅎㅎㅎ

 

간단한 거니까 가볍게 읽고 가봐요

(제가 잘못 생각한 부분은 언제든 피드백 환영입니다!)

 


 

우선 CoreData는 CoreDataStack으로 되어 있는 Framework라고 합니다!

Stack은 아래 그림처럼 구성되어 있습니다

출처 : 애플 공식문서

 

Container 안에 Context, Coordinator, Model 이 들어가 있는 걸 볼 수 있습니다

앞 포스팅에서 CRUD만 구현하기 위해서 무작정 적었다면

이제는 이해하면서 사용할 수 있습니다!

 

1. Persistent Container

Stack에 필요한 객체들을 모아둔 곳입니다!

여러가지들을 차례대로 알아봐요

 

2. Managed Object Model 

모델은 저장하고 싶은 Data를 저장하는 객체라고 생각하면 편해요

Model이 Entity 안의 Attribute (필드) 를 나타내는 개체라 합니다

 

3. Managed Object

Model을 바탕으로 만들어진 인스턴스가 MO라 부는 Managed Object 입니다

흔히 Value Object 라 생각하면 편한데 Swift에서는 Model이라고 하면 되지 않을까 생각해요

 

4. Managed Object Context

위에서 만든 MO(Managed Object)를 트랜젝션하는 관리자입니다

Insert, Select, Delete, Update (CURD)하는 친구에요!

 

5. Persistent store Coordinator

Context 가 요청을 하면 저장소에서 탐색 및 MO를 생성하는 역할을 합니다

새로 만들 MO는 다시 Context 에게 돌려줘요

 

알고 보니까 다 연결되어 있고 이해하기 쉽네요 ㅎㅎㅎ

 

추가로

Persistent Object Store에는 4가지 타입이 지원됩니다!

XML, SQLite, Binary, In memory

위 4가지 중 iOS는 XML은 지원하지 않는다고 해요

 

보통은 SQLite를 사용하는데

원자성을 가지고 있지 않아 데이터 유실이나 손상이 될 수 있지만

사용할 일부만 로딩해서 보여주기 때문에 효율적인 장점을 가지고 있습니다!

 


 

그럼 얘네는 어디에 저장되는거야..?라는 생각이 들었는데

CoreData 쓰기만 하면 되지 그거까지 알아야 되니?넵 알아두면 좋죠!

찾아보니까 Application Support에 자동으로 저장된다고 합니다.

 

그럼 찾는 건 어떻게 하냐면 기억을 더듬에 가면

// 이걸 프린트 하면 경로가 나옵니다!

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]

이게 다 옵씨때문이야 ㅜ

// 더 짧게 해서 쓸 수도 있습니다! 프린트 되는 주소는 똑같아요

let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

 

위에서 프린트한 경로 중 'Documents'까지 나오게 되는데

바로 뒤 앱코드로 들어가시면 여러 폴더가 보일거에요

 

짜잔~

 

그럼 다음 포스팅에서 봐요

오늘도 화이팅!

 

1. [CoreData]CURD 사용해보기 _ 01

2. [CoreData] 구조 및 위치에 대해서 _ 02

3. [CoreData] Relationships (+ SQLiteBrowser) _ 03

4. [CoreData] Migration _ 04

 

 

참고: https://developer.apple.com/documentation/coredata

728x90
반응형