Core Data는 Apple의 Enterprise Object Framework 의 자손이지만 관계형 백엔드와 밀접하게 연결된 ORM (Object-Relational Mapper)이지만 Core Data는 ORM 이 아닙니다 . 사실 이것은 객체 그래프 관리 프레임 워크입니다. 잠재적으로 매우 큰 객체 인스턴스 그래프를 관리하므로 필요에 따라 메모리 안팎에서 객체에 오류를 발생시켜 앱이 메모리에 완전히 맞지 않는 그래프로 작업 할 수 있습니다. Core Data는 속성 및 관계에 대한 제약 조건을 관리하고 참조 무결성을 유지합니다 (예 : 개체가 관계에 추가 / 제거 될 때 정방향 및 역방향 링크의 일관성 유지). 따라서 Core Data는 MVC 아키텍처의 "모델"구성 요소를 구축하기위한 이상적인 프레임 워크입니다.
그 그래프 관리를 구현하기 위해, 코어 데이터는 어떻게 디스크 저장소로 SQLite는 사용할 수 있습니다. 그것은 수 와 같은 다른 관계형 데이터베이스 또는 비 관계형 데이터베이스를 사용하여 구현 된 CouchDB를 . 다른 사람들이 지적했듯이 Core Data는 XML 또는 이진 형식 또는 사용자 작성 원자 형식을 백엔드로 사용할 수도 있습니다 (이 옵션을 사용하려면 전체 개체 그래프가 메모리에 맞아야합니다). SQLite 백엔드에서 Core Data를 구현하는 방법에 관심이있는 경우 Core Data API 하위 집합의 오픈 소스 구현 인 OmniGroup 의 OmniDataObjects 프레임 워크 를 확인할 수 있습니다 . BaseTen의 프레임 워크는 백엔드로의 PostgreSQL을 사용하여 코어 데이터 API의 구현입니다.
Core Data는 SQLite 용 ORM이 아니므로 임의의 SQLite 스키마를 읽을 수 없습니다. 반대로 다른 SQLite 도구를 사용하여 Core Data의 SQLite 데이터 저장소를 읽을 수 있어야합니다. 스키마는 변경 될 수있는 구현 세부 사항입니다.
따라서 Core Data 또는 SQLite를 직접 사용하는 것은 실제로 충돌이 없습니다. 관계형 데이터베이스를 원하는 경우 SQLite (직접 또는 FMDB 와 같은 Objective-C 랩퍼 중 하나를 통해 ) 또는 관계형 데이터베이스 서버를 사용하십시오. 그러나 객체 그래프 관리 프레임 워크로 사용할 핵심 데이터를 계속 배우고 싶을 수도 있습니다. Apple의 컨트롤러 클래스 및 키-값 바인딩 호환 뷰 위젯과 함께 사용하면 코드를 거의 사용 하지 않고 완전한 MVC 아키텍처를 구현할 수 있습니다 .