내 핵심 데이터 모델에는 네 개의 속성을 의미하는 두 개의 자체 참조 관계가있는 엔티티 Shape가 들어 있습니다. 한 쌍은 일대 다 관계 (Shape.containedBy < - >> Shape.contains)이고 다른 한 쌍은 다 대다 관계입니다 (Shape.nextShapes < < - >> Shape.previousShapes). 모든 것이 애플리케이션에서 완벽하게 작동하므로 자체 참조 관계가 일반적으로 문제라고 생각하지 않습니다. 이 새 버전으로 모델을 마이그레이션에 올 때핵심 데이터 : 자체 참조 속성이있는 엔티티 마이그레이션
그러나, 다음 엑스 코드이 오류 메시지와 함께, 자동으로 생성 된 맵핑 모델을 컴파일에 실패 :
2009-10-30 17:10:09.387 mapc[18619:607] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "FUNCTION($manager ,'destinationInstancesForSourceRelationshipNamed:sourceInstances:' , 'contains' , $source.contains) == 1"'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff80d735a4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff83f0a313 objc_exception_throw + 45
2 Foundation 0x00007fff819bc8d4 _qfqp2_performParsing + 8412
3 Foundation 0x00007fff819ba79d +[NSPredicate predicateWithFormat:arguments:] + 59
4 Foundation 0x00007fff81a482ef +[NSExpression expressionWithFormat:arguments:] + 68
5 Foundation 0x00007fff81a48843 +[NSExpression expressionWithFormat:] + 155
6 XDBase 0x0000000100038e94 -[XDDevRelationshipMapping valueExpressionAsString] + 260
7 XDBase 0x000000010003ae5c -[XDMappingCompilerSupport generateCompileResultForMappingModel:] + 2828
8 XDBase 0x000000010003b135 -[XDMappingCompilerSupport compileSourcePath:options:] + 309
9 mapc 0x0000000100001a1c 0x0 + 4294973980
10 mapc 0x0000000100001794 0x0 + 4294973332
)
terminate called after throwing an instance of 'NSException'
Command /Developer/usr/bin/mapc failed with exit code 6
은 '포함하는'하나의 이름입니다 자기 참조 특성의. 어쨌든, 정말 큰 문제는 매핑 모델을 볼 때 엔터티 매핑을 선택하자마자 Xcode가 충돌 할 때이 매핑 속성을 볼 수 없다는 것입니다. 그래서 나는 여기서 약간 벗어났다. 필자는 자체 참조 속성을 제거 할 수 없으므로 컴파일 할 매핑 모델을 수동으로 만들었습니다. 어떤 아이디어?
건배
"모델을 새 버전으로 마이그레이션"한다고 할 때 새로운 버전의 응용 프로그램 인 Xcode, OS가 필요합니까? – TechZen
새로운 CoreData 모델 스키마로 자동 마이그레이션 매핑을 만들려고합니다. 새로운 버전의 앱을 만들고, 스키마를 변경했으며, 새로운 애플리케이션으로 이전 데이터를 새 스키마로 마이그레이션하려고합니다. 나는 생각한다. –
그래, 맞아. 핵심 데이터 스키마를 업데이트했고 데이터 저장소의 내용을 잃고 싶지 않아 현재 데이터 저장소를 새 스키마 버전으로 마이그레이션해야합니다. 저는 이것이 사실 Xcode의 버그라고 생각하기 시작했습니다. 특히 무한 루프를 생성하는 반사적 인 관계를 가진 모델 매핑 파일의 디코딩/컴파일에 ... 저는 코코아 (cocoa- dev, 거기에 답장을 보내면 여기에 다시 게시됩니다. –