2011-03-10 3 views
2

내 애플 리케이션 sqllite 파일의 인스턴스를 만들고 사용자가 자신의 이메일에 백업 파일을 이메일로 보낼 수 있도록 프로젝트를 만들고 있습니다. 이 작업은 iStudiezPro에서 수행되었으며 마술처럼 작동합니다.백업 복원 SQLite 핵심 데이터 아이폰

나는 앱 파일을 열어서 복원 할 수있는 이메일을받을 수있다. 문제는 영속성 저장소가 앱을 다시로드해야한다는 것이다. 다시 응용 프로그램에 올 때 나는이 작업을 수행 :

[persistentStoreCoordinator release]; 
persistentStoreCoordinator = nil; 

[managedObjectContext release]; 
managedObjectContext = nil; 

[primaryUserManagedObject release]; 
primaryUserManagedObject = nil; 

[self managedObjectContext]; 

난 그냥 응용 프로그램이 실행되는 동안 핵심 데이터 스택을 다시 앱에 대한 방법을 찾을 필요가있다. 어떤 도움을 주시면 감사하겠습니다.

답변

2

가장 쉬운 해결책은 컨텍스트를 저장 한 다음 표준 파일 관리자 방법을 사용하여 저장소 파일을 문서 폴더에 복사하는 것입니다. 진행중인 핵심 데이터 작업이 없는지 확인하면 부패에 문제가 없을 것이라고 생각합니다.

추가 보호 기능을 원할 경우 managedObject 컨텍스트를 복사 한 다음 nim하고 영구 저장 코디네이터를 복사 한 후 nil합니다. 복사가 완료되면 스택을 다시 작성하십시오. 앱 자체를 다시 시작할 이유가 없습니다. 코어 데이터 스택을 관리하고 코어 데이터 스택을 켜고 끌 수있는 전용 객체를 만들어야합니다.

+0

본질적으로 그것이 내가하려는 일입니다. sqllite 파일을 전환 한 후 내 app delegate에서 managedObjectContext를 다시 초기화하려고합니다. 내 appDelegate에서 primaryUserManagedObject 및 managedObjectContext를 참조하고 있음을 염두에 두십시오. 내가 가진 문제는 내 핵심 데이터 스택을 다시 작성하는 방법을 이해할 수 없다는 것입니다. – zaid

+0

Xcode에서 기본 Core Data 템플릿을 사용하는 경우 managedObjectContext에 액세스하는 것만으로 핵심 데이터 스택의 초기화가 트리거됩니다. 이는 액세서가 존재하지 않는 경우 해당 액세서가 생성하므로 관리 객체 모델 초기화가 트리거되므로, 영구 저장소 조정자 및 영구 저장소 파일. 따라서 모든 것을 꺼낸 다음 다시 액세스하면 새로운 인스턴스로 다시 초기화해야합니다. 나는 생각한다. 나는 그렇게하지 않았다. 템플리트를 보면 스택을 빌드하는 것이 그리 어렵지 않습니다. 거의 모든 것을 보여줍니다. – TechZen

0

로컬 백업, iCloud와의 백업 복사, 이메일 백업, 이메일에서 가져 오기 및 iTunes를 통한 파일 복사를 비롯하여 여러 가지 다른 방법으로 백업 및 복원 기능을 제공하는 샘플 앱을 업로드했습니다. 이러한 기능을 보여주는 비디오는 아래 링크를 참조하십시오. 사이트에서 샘플 응용 프로그램을 다운로드 할 수 있습니다.

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/sample-apps-explanations/backup-files/