티스토리 뷰

Swift&IOS

Core Data (1)

밀쿄 2019. 4. 2. 19:00

안녕하세요 밀쿄입니다:)

첫 번쨰 포스트 이후 수많은 업로드 시도를 했으나..필력에 막혀서 쿨럭...

오늘은 필력은 해결할 수 없단 결론 끝에 첫번쨰 주제를 들고 왔습니다.

바로 Core Data입니다..

 

제가 첫 번째 앱 만들면서 이해하는데 꽤 고생했던 녀석입니다.. 하하..

현재도 공부 진행 중이구요..

그럼 거두절미하고 본론으로 들어가겠습니다.

 

스위프트엔 데이터를 영구적으로 저장하는 방법이 여러가지 있습니다.

CoreData는 그 중 하나인데요.

 

일단 애플 공식문서를 보도록 하겠습니다.( https://developer.apple.com/documentation/coredata )

 

이 영어만 보면 뭔지 모르겠네요. 제가 해석하기엔 단일 기기에서 데이터를 보존하거나 캐싱 그리고 실행취소를 지원한다..

뭐...틀린 해석같은데... 일단 넘어가겠습니다. ㅋㅋㅋㅋㅋㅋㅋ

 

세 개가 있네요.

전 일단 첫번째꺼는 스킵하고 두번째꺼부터 보도록하겠습니다.

스킵하는 이유는 저거는 그냥 따라하시면 됩니다... 제가 설명할게 없습니다.

 

이제 이 다음부터 적을게 많아집니다(필력이 딸리기 시작합...)

두번째 문서랑 세번째 문서에 보면 공통적인 그림이 하나 나옵니다.

 

 

설명에 의하면 NSPersistentContainer에서 저 세 개를 한번에 셋업해주는 것 같네요.

+ 최초 생성시 Appdelegate에서 만들어주는 것 같네요..

그치만 저는 혼자서 다 만들어보겠습니다.

 

먼저 Model 부터 만들어주기전에 Model이 무엇인지 알아봅시다.

Model은 간단히 생각하면 .xcdatamodeld file을 프로그래밍으로 표현한 겁니다.

 

Model을 만드는 방법은 문서를 보면 많이 보이지만 전 URL로 초기화하는 방법을 택하겠습니다.

forResource에는 xcdatamodeld 확장자를 가진 파일명을 적어주면 됩니다.

momd는 xcdatamodeld가 컴파일된 후의 확장자라고 하네요.

 

그 다음은 코디네이터에 대해서 알아보겠습니다.

코디네이터는 Context와 영구저장소의 커뮤니케이션을 돕는다고 하네요.

더 자세히 알아보겠습니다.

NSManagedObjectContext의 인스턴스는 코디네이터를 사용하여 개체 그래프를 Core Data에 저장하고 모델 정보를 검색합니다. 라고 되어있네요.. 더불어서 이 코디네이터가 없는 NSManagedObjectContext는 영구 저장소에 접근할 수 없다라고 하니까.. 

쉽게 말하면 NSManagedObjectContext와 직접 데이터를 주고 받으면서 영구 저장소들의 접근 조정해당 저장소에 대한 실제 입출력을 담당하는 것 같네요.

코디네이터는 

이렇게 초기화 하네요. 그대로 해보겠습니다.

 

짜잔!  이렇게 작성하시면 됩니다.

일단 첫 줄은 위에 말씀드린 것처럼 코디네이터를 초기화하는 부분입니다.

 

그리고 대망의 Context 입니다.

아마도 문서를 읽고오신 분은 알겠지만.. 적혀 있는 말들이 완전히 이해되지는 않을껍니다..

저도 그렇구요..

그냥 만들어보겠습니다...

혹시라도 알고싶은 분을 위해서 링크 달아두겠습니다 ( https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext )

첫 줄은 초기화해서 만들어주는 구문이고

두번째 줄은 코디네이터를 지정해주는 구문입니다.

 

이제 마지막으로 세 개를 한번에 셋업해주는 NSPersistentContainer를 만들어봅시다.

라고 했지만 Appdelegate에 있는걸 카피해옵시다...

카피성공!

손으로 하나하나 짜셔도 되지만 전 복사를 선택했습니다.

 

이제 Appdelegated에 Save를 복사해서 수정해줍니다.

이렇게 save도 만들고

 

AppDelegate도 수정해줍니다.

 

그리고 코어데이터는 매번 같은 값을 리턴 시키기 위해 싱글톤으로 만들어줍니다..

 

싱글톤은 이나  이걸 응용한 앱은 2탄에서 마저하겠습니다..

 

 

 

 

 

 

 

 

 

 

 

'Swift&IOS' 카테고리의 다른 글

[LeetCode: 01] Two Sum  (0) 2019.04.15
Core Data(2)  (0) 2019.04.09
원형 프로그래스바 만들어보기 (2): 완성을 향해서...  (0) 2019.04.08
원형 프로그래스바 만들어보기 (1) : 원 그리기  (0) 2019.04.05
Swift 싱글톤  (0) 2019.04.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함