2009-07-13 5 views
5

영구 저장소를 만드는 앱과이를 사용하는 앱 2 개를 만들려고합니다.iPhone CoreData 파일을 한 프로젝트에서 다른 프로젝트로 복사

지금까지 CoreData를 사용하여 XML 파일에서 데이터베이스를 성공적으로 빌드하는 응용 프로그램을 만들었습니다. 그래서이 프로젝트는 데이터 모델, 엔티티에 대한 .h/.m 파일을 포함합니다.

이제 두 번째 앱이 데이터 모델 파일 인 .sqlite 파일을 복사하여 읽을 수있게하려고합니다. h/.m 파일을 엔티티 및 해당 프로젝트에 대한 sqlite 파일과 관련이 있습니다 (기존 추가를 통해).

코드는 실행되지만 항상 데이터베이스의 개체를 찾지 못합니다.

이러한 파일을 복사 할 때 제한이나 올바른 조치가 있습니까?

답변

3

여기 해결책은 간단합니다.

하나의 프로젝트에서 .xcdatamodel 파일을 복사하기 만하면 시뮬레이터에서 처음으로 응용 프로그램을 실행할 때 응용 프로그램 용 문서 폴더가 생성됩니다. 저장된 .sqlite 또는 .binary 파일을 장치의 yourApp/Documents 디렉토리에 놓기 만하면됩니다. 시뮬레이터 디렉토리는 "~ user/Library/Application Support/iPhone Simulator"에서 찾을 수 있습니다.

제공된 iPhone에서 myApp 디렉토리를 드래그 앤 드롭하여 주최자 안팎으로 다운로드하고 편집하고 업로드 할 수도 있습니다. 응용 프로그램 목록을보십시오.

iPhone은 핵심 데이터가있는 xml 저장소를 지원하지 않으며 sqlite 또는 원자 (바이너리) 만 지원합니다. sqlite 저장소는 런타임에 모두 메모리에로드해야하는 것은 아니기 때문에 대부분의 응용 프로그램에서 훨씬 좋은 옵션입니다.

이게 무슨 뜻인가요?

+0

감사! 한 프로젝트에서 .xcdatamodeld 패키지를 다른 이름으로 복사했습니다. 나는 다른 프로젝트의 이름과 일치하도록 (패키지 내용물을 보여주기 위해) 그 안에있는 파일과 .xcdatamodel 파일의 이름을 변경했다. 무서운 원인이 다 나에게 바이너리 다. 파일을 비교할 수있는 방법이 있었으면합니다. 다행히도 파일에 프로젝트 관련 항목 (예 : 프로젝트 이름)이 포함되지 않았기를 바랍니다. 코어 데이터 스택을 설정하는 코드가 새 이름을 사용하는지 확인하십시오. 그리고 SQLlite 파일을 다시 만들 수 있도록 다시 실행하기 전에 앱을 삭제할 수 있습니다. – ma11hew28

0

나는 ... 당신은 같은 일에 응용 프로그램 번들 이름을 설정하면 장치가 동일한 응용 프로그램이라고 생각하기 때문에, 그들은 자원을 공유, 앱을 plist에 (안 100 % 확인) 생각

0

나는 이것이 당신이 원하는 방식대로 작동하지 않을 것이라고 생각합니다. iPhone에서 각 응용 프로그램은 자체 "샌드 박스"에서 실행되기 때문에 한 응용 프로그램에서 다른 응용 프로그램이 읽을 수있는 파일을 쓸 수는 없습니다.

+1

하지만 그들은 동일한 번들 경로가 있다면 리소스를 공유하게됩니다. – Daniel

+1

하지만 그들은 동일한 애플리케이션으로 간주됩니다. – Daniel

+0

사실, 원래 게시물에서 더 분명해야했습니다. 내가 뭘 하려는지 시뮬레이터에서 XML 파일 전체의 데이터베이스 (영구 저장소)를 만들려면 하나의 애플 리케이션을 실행합니다. 그런 다음 데이터 모델 + 데이터베이스 및 엔티티 관련 .m/.h 파일을 대부분 해당 데이터베이스를 읽는 실제 응용 프로그램으로 복사합니다. 따라서 실제 기기에서는 한 번만 두 번째 앱에서 작업하고 있습니다. 말이 돼? 도움 주셔서 감사합니다. – rhess

0

정말 다른 프로젝트입니까, 아니면 같은 프로젝트의 두 대상입니까? 그것은 훨씬 더 의미가있는 것처럼 보일 것입니다, 그리고 당신은 엔티티 객체가 바뀔 때 그것을 공유 할 수 있습니다.

+0

현재 2 개의 다른 프로젝트가 있습니다. 하나는 XML에서 영구 SQLite 저장소로 엔티티를로드하는 '데이터 저장소 작성자'이고 다른 하나는 실제 앱입니다. – rhess

0

하나의 프로젝트에서 다른 프로젝트로 코어 데이터 파일을 복사하려면 코어 데이터를 지원하는 새 프로젝트를 만든 다음 루트 태그를 제외한 이전 코어 데이터 파일의 내용을 열고 새 코어의 모든 자식 태그를 붙여 넣었습니다 새 프로젝트의 데이터 파일. Previous 저는 새로운 프로젝트에서 coredata 파일을 지우려고했는데, 이전 프로젝트를 붙여 넣고 이름을 바꿨습니다. 작동하지 않았습니다.

관련 문제