2012-11-20 6 views
2

복잡한 핵심 데이터 매핑 문제로 인해 고민하고 있습니다. 기본적으로 문자열 인 특성을 가진 관리 대상 개체 버전이 있습니다. 이 문자열은 많은 객체에서 동일합니다. 같은 것이기 때문에, 'name'속성을 가진 단일 엔티티가되도록 변경하는 것이 합리적이라고 생각했습니다.엔터티의 특성을 코어 데이터의 엔터티로 마이그레이션하는 방법

entity.attribute는 entity.newObject.name이되어야합니다. 여기서 attribute와 name은 모두 문자열입니다.

문제가 복잡해지기 때문에 현재 엔티티의 단일 인스턴스가되도록 많은 엔티티에 분할 된 속성을 원합니다. 또한 새로운 엔티티는 newObject.name과 일치하는 속성을 가진 객체로 다시 일대 다 관계를 가져야합니다.

핵심 데이터에서 모델을 매핑하여이 작업을 수행 할 수있는 방법이 있습니까? 자동 마이그레이션이 문제가되지 않는다는 것을 알고 있습니다.

나는이에서 가고 싶은이에

Diagram of current model

:

Diagram of wanted model

내가 특정 퍼즐 유형에 일치하는 시간에 대한 요청을 속도를 가져 오기 위해이 일을 해요 특정 세션. 생각은 - [NSSet intersectSet]은 각 개별 시간의 puzzleType 속성을 문자열과 비교하는 것보다 훨씬 빠릅니다. 매핑 모델을 통해 또는 프로그래밍 방식으로이 작업을 수행하려면 어떻게해야합니까?

답변

0

자동 마이그레이션을 사용할 수 있습니다. 매핑을 자동으로 추론 할 수 없습니다.

높은 수준의 작업은 다음과 같습니다

  1. 새로운 모델 버전을 만듭니다.
  2. 새 모델을 원하는대로 구성하십시오.
  3. 새 모델 버전을 현재 버전으로 설정하십시오.
  4. 이전 버전에서 새 버전으로 매핑 모델을 생성합니다. 여기에서 $ source.attributes가 새로운 속성에 매핑되는 항목을 설정합니다.
  5. 영구 저장소 조정자를 구성 할 때 NSInferMappingModelAutomaticallyOption 옵션을 NO로 설정하십시오.
  6. NSMigratePersistentStoresAutomaticallyOption 옵션을 YES로 둡니다. 마이그레이션 관리자를 사용하여 마이그레이션 진행 상황을 표시하려면이 옵션을 NO로 설정해야합니다.

해당 항목에 대해 더 자세히 알아야 할 경우 알려주십시오.