핵심 데이터
Core Data![]() | |
개발자 | 애플사 |
---|---|
안정된 릴리스 | 3.2.0 |
운영 체제 | macOS, iOS, tvOS, 시계OS |
유형 | 시스템 유틸리티 |
면허증. | 독자 사양 |
웹 사이트 | Apple 개발자 코어 데이터 프로그래밍 가이드 |
코어 데이터는 MacOS 및 iOS 운영 체제에서 Apple이 제공하는 객체 그래프 및 지속성 프레임워크입니다.Mac OS X 10.4 Tiger 및 iPhone SDK 3.0 [1]탑재 iOS에서 도입되었습니다.관계 엔티티 속성 모델에 의해 정리된 데이터를 XML, 바이너리 또는 SQLite 저장소로 시리얼화할 수 있습니다.데이터는 엔티티와 그 관계를 나타내는 상위 수준의 객체를 사용하여 조작할 수 있습니다.코어 데이터는 시리얼화된 버전을 관리하여 지속성을 포함한 객체 라이프 사이클 및 객체 그래프 관리를 제공합니다.코어 데이터는 SQLite와 직접 연결하여 개발자를 기본 [2]SQL로부터 격리합니다.
코코아 바인딩이 모델-뷰-컨트롤러 설계에서 통제관의 많은 업무를 처리하는 것처럼, 핵심 데이터는 데이터 모델의 많은 업무를 처리합니다.다른 작업 중에서도 변경 관리, Disk 직렬화, 메모리 설치 공간 최소화 및 데이터에 대한 쿼리를 처리합니다.
사용.
코어 데이터는 엔티티와 그 관계 및 특정 기준을 충족하는 엔티티를 검색하는 fetch 요청의 관점에서 표현되는 높은 수준의 데이터 모델을 사용하여 데이터를 기술합니다.코드는 저장 및 검색에 대한 세부 사항을 걱정할 필요 없이 순수하게 개체 수준에서 이 데이터를 검색하고 조작할 수 있습니다.Interface Builder에서 사용할 수 있는 컨트롤러 개체는 이러한 엔티티를 직접 가져와 조작할 수 있습니다.코코아 바인딩과 결합하면 UI는 백그라운드 코드 없이 데이터 모델의 많은 구성 요소를 표시할 수 있습니다.
예를 들어 개발자가 vCard를 처리하는 프로그램을 작성할 수 있습니다.이를 관리하기 위해 작성자는 vCard를 오브젝트로 읽어내어 하나의 큰 XML 파일에 저장합니다.코어 데이터를 사용하여 개발자는 스키마를 Xcode의 데이터 디자이너에서 인터페이스 빌더 창으로 드래그하여 스키마의 GUI를 만듭니다.그런 다음 표준 Objective-C 또는 Swift 코드를 작성하여 vCard 파일을 읽고 데이터를 핵심 데이터 관리 엔티티에 저장할 수 있습니다.이 시점부터 작성자의 코드는 기본 vCard가 아닌 이러한 핵심 데이터 개체를 조작합니다.의 접속Save
컨트롤러 오브젝트 내의 적절한 메서드에 대한 메뉴 항목은 컨트롤러에 오브젝트 스택을 검사하고 더러운 오브젝트를 판별하여 이러한 변경을 포함한 코어 데이터 문서 파일을 다시 쓰도록 지시합니다.
코어 데이터는 대규모 클래스 계층으로 구성되지만 상호작용은 소규모 클래스 집합에서만 일반적입니다.
이름. | 사용하다 | 주요 방법 |
---|---|---|
NSManaged Object(NSManaged 객체) |
|
|
NSManaged Object Context |
|
|
NSManaged Object Model(NSManaged Object Model) |
|
|
NSFetchRequest(NSFetchRequest) |
|
|
NSPersistent Store Coordinator |
|
|
언스피리케이트 |
|
|
스토리지 포맷
코어 데이터는 XML, 바이너리 또는 SQLite로 개체를 직렬화하여 [2]저장할 수 있습니다.Mac OS X 10.5 Leopard의 출시와 함께 개발자들은 그들만의 맞춤형 원자 저장소 유형을 만들 수 있습니다.각 방법에는 사람이 읽을 수 있는(XML) 또는 더 효율적인 메모리(SQLite) 등의 장점과 단점이 있습니다.
코어 데이터의 이 부분은 매우 정교한 쿼리를 작성할 수 있다는 점에서 원래의 엔터프라이즈 객체 프레임워크(EOF) 시스템과 유사합니다.EOF와 달리 기본 저장소가 SQL 기반이 아닐 수 있으므로 자체 SQL을 작성할 수 없습니다.최근에는 ODBC [6]프레임워크에서 ODBC용 핵심 데이터 저장소를 사용할 수 있게 되었습니다.
코어 데이터 스키마가 표준화되어 있습니다.Xcode Data Model 파일이 있으면 해당 형식의 파일을 자유롭게 읽고 쓸 수 있습니다.단, EOF와 달리 코어 데이터는 ODBC 프레임워크를 [6]사용하지 않는 한 현재 다중 사용자 또는 동시 액세스용으로 설계되어 있지 않습니다.
스키마 이행도 간단하지 않아 거의 항상 코드가 필요합니다.다른 개발자가 데이터 모델에 액세스할 수 있고 데이터 모델에 의존하고 있는 경우 스키마가 변경되면 새로운 데이터 모델 외에 버전 변환 코드를 제공해야 할 수 있습니다.
역사와 기원
코어 데이터의 설계 대부분은 이전 NeXT 제품인 [7]EOF(Enterprise Objects Framework) 덕분입니다.
EOF는 Microsoft SQL Server 및 Oracle과 같은 하이엔드 SQL 데이터베이스 엔진의 객체 관계 매핑입니다.EOF의 목적은 두 가지였습니다. 첫째, 데이터베이스 엔진에 연결하여 구현 세부사항을 숨기는 것입니다. 둘째, 관계형 형식에서 데이터를 읽어내고 이를 개체 세트로 변환하는 것입니다.개발자는 일반적으로 개체와만 상호 작용하여 데이터를 개체에 매핑하는 몇 가지 설정 비용을 들여 복잡한 프로그램 개발을 단순화했습니다.EOF 오브젝트 모델은 결과 프로그램을 문서와 같은 방식으로 작동하도록 의도적으로 설계되었습니다.사용자는 메모리에서 로컬로 데이터를 편집하고 한 번의 저장 명령으로 모든 변경 사항을 쓸 수 있습니다.
EOF에는 지금까지 NeXTSTEP/OpenStep에서는 사용할 수 없었던 유용한 코드가 다수 포함되어 있었습니다.예를 들어, EOF에서는 시스템이 나중에 쓸 수 있도록 더러운 객체를 추적하는 기능이 필요했습니다.이것은 문서와 같은 시스템으로 개발자에게 제공될 뿐만 아니라 각 명령어가 실행 취소 불가능한 작업으로 표현되는 무제한 실행 취소 명령 스택의 형태로도 제시되었습니다.많은 개발자들은 이 상태 관리 코드가 EOF에서 분리되기에는 너무 유용하다고 불평했고, 나중에 Mac OS X로 전환하는 동안 Cocoa API로 옮겨졌습니다.
처음에 번역되지 않은 것은 EOF 자체였습니다.EOF는 주로 OpenStep 시대의 다른 제품인 WebObjects와 함께 사용되었습니다.WebObjects는 원래 Objective-C에 기반한 애플리케이션 서버입니다.당시 애플은 WebObjects를 Java 프로그래밍 언어로 이식하는 과정에 있었고, 이 변환의 일환으로 EOF는 코코아에서 사용하는 것이 훨씬 더 어려워졌습니다.이번에도 서드파티 개발자들 사이에서 상당한 불만이 있었다.
중요한 인식 중 하나는 EOF의 객체 상태 관리 시스템이 관계형 데이터베이스와 실제로 관련이 없다는 것입니다.개발자가 다른 객체의 그래프를 관리하기 위해 동일한 코드를 사용할 수 있습니다.이 역할에서 EOF의 정말 유용한 부분은 원시 데이터에서 객체 세트를 자동으로 작성한 후 추적하는 것입니다.핵심 데이터의 기반이 되는 것은 이 개념입니다.
메모들
레퍼런스
- Apple Inc. (2009년 9월 17일)"핵심 데이터 프로그래밍 가이드"https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html 에서 취득했습니다.
- Apple Inc. (2009년 9월 9일)"iPhone OS용 핵심 데이터 튜토리얼"https://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html 에서 취득했습니다.
- Apple Inc. (2006)"EOModeler 사용자 가이드"https://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html #//apple_ref/doc/uid/TP30001018-CH201-TP1에서 취득.
- Jurewitz, M. & Apple Inc. (2010년)「iPhone 비디오:핵심 데이터 사용"을 참조하십시오.https://developer.apple.com/videos/iphone/ #video-advanced-coredata에서 검색
- 스티븐슨, S. (2005)"핵심 데이터 클래스의 개요"http://cocoadevcentral.com/articles/000086.php 에서 취득했습니다.
- 자라, M.S. (2009년Mac OS X에서 데이터를 고정하기 위한 핵심 데이터 Apple의 API입니다.프랙티스 프로그래머.
- LaMarche, J. & Mark, D. (2009년)기타 아이폰3 개발: iPhone SDK의 트러블 슈팅 3. Apress.
외부 링크
- 애플사(2018년)"핵심 데이터"https://developer.apple.com/documentation/coredata 에서 취득했습니다.
- Apple Inc. (2009년)"웹 오브젝트 튜토리얼"https://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html 에서 취득했습니다.
- 코코아 개발 (신규)https://web.archive.org/web/20080801025517/http에서 취득://www.cocoadev.com/
- GitHub. "Odbc 프레임워크"https://github.com/mhakman/osx-cocoa-odbc
- mFluent LLC"핵심 데이터 지속성 파일 보기"https://github.com/yepher/CoreDataUtility
- 스티븐슨, S. (2005)"핵심 데이터 애플리케이션 구축"http://cocoadevcentral.com/articles/000085.php 에서 취득했습니다.