3

센서 (예 : 온도 ° C, 압력 kPa)의 측정을 샘플링하는 배포 된 앱이 있습니다. 사용자는 실험을 생성하고 샘플을 수집 할 수 있습니다. 각 샘플은 실행으로 저장되므로 실험에서 실행까지 일대 다 관계가 있습니다. 성능 향상을 위해 Run은 Data 엔티티 (실제 원시 데이터가 저장되는 곳)와 1 대 1의 관계를가집니다. 이렇게하면 많은 양의 데이터를로드하지 않고도 일부 실행 속성을로드 할 수 있습니다.코어 대다 관계로의 일대일 관계 데이터 이동

대부분의 센서에는 여러 개의 측정 값이 있으므로 실제로 샘플링되는 모든 데이터를 저장하는 것이 좋습니다. 그러나 이는 실행 < ---> 데이터 관계가 Run < -> 데이터 (Xcode의 규칙을 사용)가되어야 함을 의미합니다.

이전의 Run to One 데이터 모델에서 새로운 Run-to-many Data 모델로 데이터를 마이그레이션하려고 시도했습니다. 매핑 모델을 사용하여이 작업을 수행 할 수 있습니까? 그렇다면 예제에 대한 조언이있는 사람이 있습니까? 그렇지 않다면 누구나 그 방법에 대한 예를 찾을 수 있습니까?

어떤 조언이나 조언을 주셔서 감사합니다.

답변

1

결국 NSEntityMigrationPolicy를 여러 번 서브 클래 싱해야했습니다. 이는 좀 더 일반적인 모델을 지원하기 위해 여러 수준의 추상화 수준이 추가되어 속성이 여러 엔터티에서 /로 이동하기 때문에 필요했습니다. 또한 매핑 모델 내에서 엔티티 매핑의 순서가 중요했습니다.

궁극적으로, 나는 -addPersistentStoreType에 대한 옵션을 설정했다 : 구성 : URL을 : 옵션 : 오류 :에 : 따라서

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil]; 

NSInferMappingModelAutomaticallyOption를 생략합니다.

3

마이그레이션이 쉬워야 자동 마이그레이션이 작동합니다. 최악의 경우 매핑 모델이 필요하지만 자동 마이그레이션을 사용하면 "정상적으로 작동 할 것"이라고 생각합니다.

+0

감사합니다. Marcus. 슬프게도 내가 질문 한 시점과 지금 사이에 스키마가 상당히 복잡해졌습니다. 그러나 철저하고 신중하게 검토 (즉, 철저하고 신중하게 읽음)하면 관련 마이그레이션 코드처럼 Core Data book이 많은 도움이됩니다. 매우 빨리 NSEntityMigrationPolicy를 하위 클래스화할 것을 두려워합니다. – westsider