Core Data란 무엇인가요?
Core Data는 응용 프로그램에서 모델 계층 객체를 관리하는 데 사용하는 프레임 워크입니다. 영속성을 포함하여 객체의 life cycle 등의 기능을 가진 객체 그래프 관리자의 역할을 수행합니다.
코어 데이터는 일반적으로 모델 계층을 지원하기 위해 작성하는 코드의 양을 50-70% 감소시킵니다. 다음과 같은 기본 기능이 제공되기 때문에 구현, 테스트, 최적화 부분을 많이 줄일 수 있습니다.
- 수정사항 트랙킹, 실행취소/재시도를 기본적으로 제공합니다.
- 객체간 관계를 일관적으로 관리하면서 변경사항을 전파합니다.
- 오버헤드를 줄이기 위해 객체의 지연로딩(Lazy loading), 부분 오류 발생, copy-on-write 데이터 공유를 제공합니다.
- 자동적으로 속성 값의 유효성을 검사합니다. 관리 객체는 표준 key-value 코딩 유효성 검사 메서드들을 확장하여 값이 허용되는 범위 내에 있음을 보장합니다.
- 간단한 스키마 변경이 가능하고 효율적으로 스키마 마이그레이션을 수행할 수 있는 스키마 마이그레이션 도구를 제공합니다.
- 사용자 인터페이스 동기화를 지원하기 위해 응용 프로그램의 컨트롤러 레이어와 선택적으로 통합할 수 있습니다.
- 메모리 및 사용자 인터페이스에서 데이터를 그룹화하고 필터링, 조직화할 수 있습니다.
- 외부 데이터 저장소에 객체들을 저장하도록 지원합니다.
- 정교한 쿼리 컴파일. SQL을 작성하는 대신 NSPredicate 오브젝트를 fetch request과 연관시켜 복잡한 쿼리를 작성할 수 있습니다.
- 자동 충돌 해결을 지원하기 위해 버전 추적과 최적화 locking을 제공합니다.
- macOS 및 iOS 툴 체인과의 효과적인 통합.
Core Data는 영구저장을 위해 SQLite 를 사용합니다.
- SQLite 및 일반적인 DBMS 에서 지원하는 검색, 정렬 등의 기능을 제공합니다.
- SQLite의 Wrapper가 아닙니다. 동일한 기능을 제공한다 하더라도 SQLite 와 다른 로직으로 수행될 수 있습니다.
- 또한 SQLite에서 제공하는 모든 기능을 제공하는 것이 아닙니다. (예: 자동 데이터 증가 attribute)
- SQLite는 영속성 유지를 위해 디스크에 데이터를 저장하지만, Core Data는 완전한 인-메모리 형태로 사용 가능합니다. 역설하자면 Core Data는 명시적으로 저장 명령을 내릴때까지 디스크에 저장하지 않습니다.
이 문서는 편의와 명확성을 위해 직원 데이터베이스 스타일의 예제를 사용합니다. 풍부하지만 쉽게 이해할 수있는 문제 영역을 표여줍니다. 그러나 핵심 데이터 프레임 워크는 데이터베이스 스타일의 응용 프로그램이나 클라이언트 - 서버 동작에만 국한되지 않습니다. 이 프레임 워크는 Sketch와 같은 벡터 그래픽 응용 프로그램이나 Keynote와 같은 프레젠테이션 응용 프로그램의 기초만큼 유용합니다.
Data Model 만들기
Core Data의 기능 대부분은 응용 프로그램의 엔터티, 속성 및 속성 간의 관계를 설명하기 위해 만드는 스키마에 따라 달라집니다. 핵심 데이터는 NSManagedObjectModel의 인스턴스인 관리 객체 모델이라 불리는 스키마를 사용합니다. 일반적으로 모델이 풍부할수록 더 우수한 Core Data가 응용 프로그램을 지원할 수 있습니다.
Entity와 그 Property 만들기
Xcode에서 새 프로젝트를 시작하고 템플릿 선택 대화 상자를 열 때 코어 데이터 사용 확인란을 선택합니다. 코어 데이터 모델의 소스 파일이 템플리트의 일부로 작성됩니다. 해당 소스 파일의 확장자는 .xcdatamodeld입니다. 탐색기 영역에서 해당 파일을 선택하여 핵심 데이터 모델 편집기를 표시하십시오.