이번 기술 공유를 통해 만든 키노트입니다.

코어 데이터란 무엇일까요?

코어데이터는 iOS 프레임워크입니다. 프레임 워크는 객체 생명주기와 객체 그래프관리에 관련된 솔루션을 제공합니다. 우리가 데이터베이스처럼 사용할 Persistence 객체 그래프 관리에 포함이 됩니다.

객체그래프 관리 내용 추가(https://velog.io/@ssionii/Core-Data%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%84%EB%9D%BC%EB%B3%B4%EC%9E%90-1-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90)

코어 데이터로 있는 기능들입니다. 하지만, 대부분의 아카데미 러너들이 그랬듯이, 이번 키노트에서는 Persistence 사용한 데이터 저장, 읽기, 수정, 삭제에 대해서만 다룰 예정입니다.

코어 데이터의 대부분 기능들은 애플리케이션의 Entity, Property, relationship 사이의 관계를 설명하기 위해 생성하는 스키마에 따라 결정됩니다. CoreData NSManagedObjectModel 인스턴스인 관리 객체 모델 (Managed Object Model)이라는 스키마를 사용합니다. 이러한 모델이 많을 수록 CoreData 좋게 앱을 지원해 있습니다.

우선 지금까지 해왔던 것처럼 프로젝트를 생성해줍니다.

그리고 옵션 설정에서 Use CoreData 선택해줍니다.

그러면 평소에 보던 화면이랑 약간 다른 느낌의 창이 뜹니다. ContentView Hello World 사라졌습니다.

디바이스를 iPhone으로 바꿔주면,

이렇게 타임 스탬프가 찍혀져 있고 추가 수정이 가능해 보이는 리스트가 나옵니다.

또한 네비게이션 영역에 프로젝트 이름과 똑같은 xcdatam…파일이 보입니다.

들어가서 보니 xcodeproj 파일이랑 비슷한 느낌으로 구성되어있는 것을 확인할 있습니다.

자동으로 생성되어 있는 item 엔티티와 timestamp Attribute 확인할 있습니다.

엔티티와 어트리뷰트 설명 추가

Entity를 추가하려면 하단의 add entity 누르면 되고, Attribute 추가하려면 하단의 add atribute 혹은 attribute 테이블 안에 있는 + 버튼을 클릭하면 됩니다.

Entity나 Attribute를 삭제하려면 선택한 상태에서 백스페이스버튼을 눌러주면 됩니다.

엔티티를 누르고 인스펙터창을 보면 일단 먼저 이름 설정칸과 Codegen이라는 칸이 있습니다.

Codegen 설명 추가

Attribute를 선택후 인스펙터 창을 보면 이름과 타입이 있습니다. 애플 공식문서(아카이브)에서는 디폴트인 Optional 사용하는 것을 권장합니다. 왜냐하면 값이 0일때, 없을때를 구분해주기 때문입니다. 여기서 옵셔널은 스위프트 문법이 아닌 SQL에서의 문법입니다.

하단의 에디터 스타일을 변경하면 UML 다이어그램으로 관계를 있습니다. 하지만, relationship을 사용하지 않는다면 쓸모는 없을 것입니다.

우리가 앞으로 진행해야할 과정입니다.

구조체를 생성후, 인스턴스를 만들고 저장하는 과정을 거칩니다.(1 - 2과정)

코어데이터에 저장이 되었는지 불러오기를 통해 확인합니다.(3 - 5과정)

그러기 위해서는 우선 코어 데이터 스택이란 것에 대해서 알고가야 합니다.

NSManagedObjectModel 인스턴스는 properties relationships 포함하여 app's types 설명합니다.

Entity 설명하는 DB 스키마라고 합니다.

Managed object Structure 정의합니다.

NSManagedObjectContext 인스턴스는 app's types 인스턴스에 대한 변화를 추적합니다. 객체를 통해서 create, delete, fetch, update 작업을 있습니다. (core data 메모리에 로드된 상태로 처리되는데, 때의 메모리가 context 의미합니다.)

여기서 Context가 Transaction 이라는 설명도 있었습니다.

NSPersistentStoreCoordinator 인스턴스는 store 에서 app's types 인스턴스를 저장하고 가져옵니다. (Context Container 사이를 통신합니다.)

Persistent storage managed object model 연결합니다.

NSPersistentContainer 인스턴스를 사용해서 model, context, store coordinator 동시에 설정합니다. (전체적으로 관리하는 최상단의 객체)

Core Data Stack 나타내는 필요한 모든 객체를 포함한다.

그리고 우리가 사용하기 편하게 위의 데이터 스택들을 관리해주는 PersistenceManager를 만들어 줍니다.

NearCat:ch에 대한 설명은 여기

우리가 DB용으로 사용하는 CoreData를 이 파일에서 전체적으로 다루겠다! 그런 의미로 생각하면 됩니다.

우선 PersistenetContainer는 다음 코드처럼 만들어집니다.

밑의 코드 내용 설명 보강

NSPersistentContainer 키워드를 사용하여 만들어집니다.

데이터베이스에서 기본적으로 해줘야할 CRUD는 다음처럼 구현합니다.

키워드 위주로만 설명이 될텐데 생성을 담당하는 키워드는 save가 있습니다.

불러오기, 읽기를 담당하는 키워드는 fetch입니다.

rollback 키워드를 통해 업데이트 할 수 있습니다.

delete 키워드를 통해 삭제가 가능합니다.

이번 키노트를 만들면서 많이 도움이 되었던 사이트들입니다.

 

+ Recent posts