초보자를 위한 스위프트 4.2 의 핵심 데이터
핵심 데이터는 애플에서 제공하는 오브젝트 그래프와 지속성 프레임워크이다. 그것은 맥 10.4 타이거와 아이폰 3.0 에 도입되었다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.

코어 데이터에 새로운 개발자는 종종 스퀘어 라이트 및 코어 데이터의 차이에 의해 혼동된다. 만약 당신이 스퀘어 라이트 또는 코어 데이터가 필요한지 궁금하다면,당신은 잘못된 질문을하고 있습니다. 핵심 데이터는 데이터베이스가 아니라는 것을 기억하십시오.
:
- 데이터 제한 기능이 있습니다.
- 디스크에 저장된 데이터에서 작동합니다.
- 테이블을 삭제하고 메모리에로드하지 않고 데이터를 편집 할 수 있습니다.
- 코어 데이터에 비해 느립니다.
핵심 데이터:
- 필요한 경우 비즈니스 논리로 구현해야 할 데이터 제약 조건이 없습니다.
- 는 메모리에서 작동합니다.(데이터는 디스크에서 메모리로로드해야합니다)
- 테이블을 삭제하거나 업데이트해야하는 경우 전체 데이터를로드해야합니다.
- 레코드 생성 측면에서 빠릅니다.(그들을 저장하는 것은 시간이 소요될 수 있습니다)
바둑은 보드게임입니다,바둑은 181 개의 흑돌과 180 개의 백돌 그리고 바둑판으로 이루어집니다.
핵심 데이터 제한
핵심 데이터는 환상적인 프레임 워크이지만 몇 가지 단점이 있습니다. 이러한 단점은 프레임 워크의 특성 및 작동 방식과 직접 관련이 있습니다.
핵심 데이터는 메모리에서 관리하는 객체 그래프를 유지하기 때문에 마술을 할 수 있습니다. 즉,레코드가 메모리에 있으면 레코드에서만 작동할 수 있습니다. 이는 데이터베이스에서 쿼리를 수행하는 것과는 매우 다릅니다. 수천 개의 레코드를 삭제하려면 핵심 데이터가 먼저 각 레코드를 메모리로 로드해야 합니다. 이것은 잘못 수행 된 경우 메모리 및 성능 문제를 초래한다는 것은 말할 필요도 없습니다.
또 다른 중요한 제한은 코어 데이터의 스레딩 모델입니다. 프레임워크는 단일 스레드에서 실행될 것으로 예상합니다. 다행히도 코어 데이터는 수년에 걸쳐 극적으로 발전해 왔으며 프레임 워크는 멀티 스레드 환경에서 코어 데이터 작업을 안전하고 쉽게 할 수있는 다양한 솔루션을 마련했습니다.
복잡한 오브젝트 그래프를 관리해야 하는 어플리케이션의 경우 핵심 데이터가 적합합니다. 당신은 단지 관련이없는 개체의 소수를 저장해야하는 경우,당신은 경량 솔루션 또는 사용자 기본값 시스템과 더 나을 수 있습니다.
코어 데이터 데모(생성,검색,업데이트 및 삭제)
코어 데이터의 기본 사항을 설명하기 위해 코어 데이터 모듈을 선택한 단일 뷰 앱을 만들어 보겠습니다.

먼저 새 프로젝트를 만들고”코어 데이터 사용”을 선택하겠습니다. 기존 프로젝트에 해당 프레임 워크를 추가 할 수 있지만,그것은 모든 것이 당신을 위해 이미 유선 될 것 같은 장소에서 추가하는 것이 더 쉽습니다.프로젝트가 생성되면,당신은 코어 테스트와 같은 파일을 볼 수 있습니다.추가.
클릭하면 데이터 모델을 나타내는 엔터티를 구성할 수 있는 도구가 표시됩니다. 각 엔티티에 대해 몇 가지를 정의 할 수는 있지만 우리에게 속성과 관계가 가장 중요합니다.



이제,우리는 핵심 데이터를 지원하는 데모 프로젝트를 만들었습니다. 우리는 쉽게
- 있는 관찰 할 수있는이 엑스 코드 템플릿의 두 가지 주목할만한 변화가 있습니다.이 응용 프로그램은 다음과 같습니다.핵심 데이터 스택 코드가있는 신속한 파일

코어 데이터 스택
스위프트는 주석의 형태로 명확한 문서를 가지고 있지만,한마디로,그것은 지속 컨테이너를 설정하고 변경 사항이있는 경우 데이터를 저장합니다. 응용 프로그램이 실행 되 자마자 실행되는 첫 번째 파일이므로 코어 데이터 스택에서 컨텍스트를 저장하고 가져올 수 있습니다.
이제 사용자 엔터티에서 데이터를 모델링했습니다. 그것은 몇 가지 레코드를 추가하고 코어 데이터에 저장하는 시간이다
우리의 뷰 컨트롤러에 코어 데이터 가져 오기 시작.코어 데이터에 레코드 만들기
코어 데이터에 레코드를 추가하는 프로세스에는 다음 작업이 있습니다.
- 각 키의 레코드 값 설정

데이터 검색
프로세스를 만들려면 루프를 통해 레코드 만들기 저장된 데이터를 가져 오는 것은 매우 쉽습니다. 필요한 경우 필터 데이터에 술어를 사용하십시오
다음 코드를 사용하여 사용자 엔티티의 데이터.

업데이트 데이터
업데이트 레코드의 경우 먼저 위의 데이터 검색 프로세스와 동일한 술어로 데이터를 가져 오기/검색해야합니다. 그런 다음
- 를 따르는 몇 단계 아래에서 엔티티(예제의 사용자)에 대한 술어로 요청을 준비하십시오
- 레코드를 가져 와서 키
- 로 새 값을 설정하고 마지막 저장 컨텍스트는 데이터 만들기와 동일합니다.

데이터 삭제
삭제 레코드의 경우 먼저 가져 오기 요청으로 삭제할 개체를 찾아야합니다. 그런 다음 레코드 삭제에 대한 몇 가지 단계를 따르십시오
- 엔티티(예제의 사용자)에 대한 술어로 요청을 준비하십시오
- 레코드 가져 오기 및
- 를 삭제하고 컨텍스트를 만듭니다.삭제(객체)호출(아래 첨부 된 참조 이미지)

글쎄,이것은 핵심 데이터에 충분하지 않으며,핵심 데이터 추적 데이터 변경,술어 추가 및 데이터베이스의 복잡한 관계로 할 수있는 복잡한 일이 많이 있습니다. 더 많은 핵심 데이터를 사용하면 상황이 더 복잡해집니다.