2013-03-15 1 views
0

새로운 개발 시스템에 전무 모델을 가진 NSPersistentStoreCoordinator를 만들고, 내가 열 때, 구축하고 여전히 예전에 완벽하게 작동하는 (기존 핵심 데이터 프로젝트를 실행할 수 없습니다 machine)에서 "모델이없는 NSPersistentStoreCoordinator를 만들 수 없습니다."라는 오류 메시지가 나타납니다.난 그냥 엑스 코드를 사용하여 개발을위한 새로운 기계를 설정 한

이 오류와 관련된 stackoverflow에 대한 수많은 질문을 읽었으며 iOS가 데이터베이스 개체 모델을 처리하는 방법을 더 잘 이해하고 있으며 분명히 말할 것도 없습니다. 저주.

내 오래된 기계에 좋은 NSManagedObjectModel를 반환하는 ... 즉 내 관리 개체 모델에 대한

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"project" withExtension:@"momd"]; 
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

를 표준 초기화 방법을 사용하고 있지만, 전무 나의 새로운 하나.

컴파일 할 번들에는 project.mom 파일이 포함되어 있습니다. project.mom 파일에는 이전 컴퓨터의 컴파일 된 출력과 완전히 동일한 project.mom 파일이 포함되어 있습니다. 매우 좌절! 내가 생각할 수있는

있는 유일한 방법은 거기에 나는 새 시스템에 올바르게 설정하지 엑스 코드 내에서 구성 옵션이 있지만, 어떤 도움이나 조언이 매우 극명하게 될 것이다 것입니다!

*

내 새 컴퓨터에 번들 Project.momd의 내부 project.mom을 포함 * UPDATE. 내 오래된 컴퓨터에서 Project.mom은 Project.mom의 내부에 있습니다. 모델 이름이 대소 문자를 구별합니다. 그래서 xcode가 소문자로 엄마를 컴파일하는 이유를 알아야합니다 ...

수동으로 프로젝트 이름 바꾸기 .mom을 Project.mom에 번들 안에 넣으면 실제로 프로젝트가 다시 컴파일 될 때까지 임시적으로 문제가 해결됩니다.

+0

이전 컴퓨터에서 모두 정리 (cmd + shift + option + k) 한 다음 다시 작성하면 앱이 계속 작동합니까? 그렇지 않은 경우 빌드의 "번들 리소스 복사"단계에서 모델이 복사되지 않을 수 있으며 이전 컴퓨터는 캐시 된 버전을 사용했을 수 있습니다. –

+0

안녕하세요 라파엘, 답장을 보내 주셔서 감사합니다. 첫째로, 나는 현재 프로젝트의 두꺼운 부분에 있지만, 응용 프로그램은 다양한 장치로 잘 컴파일되고 실행되지만 현재 나의 오래된 컴퓨터의 현재 작동 상태를 위험에 빠뜨릴 수있는 일은하지 않습니다. project.xcdatamodeld 파일은 현재 빌드의 "Copy Bundle Resources"단계에 포함되어 있지 않지만 차이는 없습니다. 이 파일 만 포함시켜야합니까? 다시 한 번 감사드립니다, 해리 – Harry

+0

나는 그것이 그 목록에 포함되어야한다고 잘못 생각합니다. 그러나, 그것은 당신이 구축하고자하는 목표의 능동적 인 멤버 여야합니다. 모델을 클릭하고 파일 관리자 (cmd + option + 1)를 열면 "대상 멤버쉽"섹션에 대상 옆에 체크 표시가 있습니까? –

답변

2

xcdatamodel 파일 (들)이 같은 경우가 있는지 확인하기 위해 xcdatamodeld "폴더"(Finder에서 "패키지 내용보기"를 사용)를 엽니 다. 이론상, xcdatamodeldmomdxcdatamodel에서 mom으로 컴파일됩니다. 서로 다른 컴퓨터에서 다른 결과를 얻고있는 이유가 될 수있다 (적어도 기본적으로) 그래서 OSX의가 아닌 상태에서 아이폰 OS의 파일 시스템은 대소 문자를 구분

참고.

+0

Dropbox를 사용하고 있습니다. 대용량 파일 이름을 가진 파일을 저장하지 않는다는 것을 발견 한 여러 컴퓨터 (나는 독점 개발자 임)의 프로젝트에 액세스하여 내 새 컴퓨터의 보관 용 계정 폴더에있는 파일을 project.xcdatamodeld 및 Project.xcdatamodel 내 Project.xcdatamodeld 및 Project.xcdatamodel 내 이전 컴퓨터 dropbox 폴더에 있습니다. 나는이 사건을 '폐쇄적'이라고 부를 것이고, 당신의 도움에 감사드립니다. 여러 컴퓨터에 액세스하기 위해 프로젝트의 온라인 저장 용량에 대한 권장 사항이 있습니까? – Harry

+0

많은 사람들이 Dropbox를 사용하여 Git을 다음과 같이 성공적으로 사용했다고 생각합니다. Dropbox 폴더 외부에 프로젝트를 저장하고 Git을 사용하여 커밋을 관리하십시오. 그런 다음 맨 처지를 Dropbox 폴더에 복제하고 푸시/풀합니다. Dropbox는 리포지토리를 동기화하고 Git을 사용하여 필요할 때 "동기화"할 수 있습니다. 차가운 차가 아니기 때문에 차라리 우회하는 것입니다. –

+0

맞습니다. Dropbox는 대개 올바른 파일 이름 대/소문자를 동기화하지만 대소 문자 만 다를 경우 이름 바꾸기를 선택하지 않습니다. 해결 방법은 문제가되는 파일을 Dropbox 폴더 밖으로 옮기고 Dropbox를 동기화 한 다음 다시 추가하는 것입니다. 또는 파일의 이름을 다시 한 번 변경하고 (이번에는 대소 문자를 변경하는 것보다 많음) 올바른 파일 이름으로 다시 시도 할 수도 있습니다. –

관련 문제