2013-05-23 5 views
1

코어 데이터에 이상한 문제가 있습니다. 특정보기 컨트롤러에서 코어 데이터의 개체에서 뷰를로드하고 있습니다. 앱을 실행할 때 처음으로이 뷰를로드 할 때 Core Data는 가져 오기에서 아무 것도 반환하지 않습니다. 따라서 Core Data를 다시 채우고 그 후에 뷰가 표시 될 때마다 코어 데이터에서 개체를 올바르게 가져옵니다. 그러나 앱이 시작될 때마다 핵심 데이터에서 아무 것도 찾지 못하고 다시 처음부터 개체를 만들어야합니다.코어 데이터가 시작 사이에 지속되지 않음

그렇다면 응용 프로그램이 실행되는 동안 코어 데이터 개체가 지속되지만 실행 사이에는 유지되지 않게되는 원인은 무엇입니까? 나는 어떤 물건도 지우려고하지 않고있다.

편집 : 실제로 코어 데이터에 무엇이 있는지 볼 수있는 방법이 있습니까? 내가 볼 수있는 파일이나 뭐? 그러면 디버깅이 쉬워집니다.

+0

영구 저장소, 코디네이터 및 컨텍스트는 어떻게 작성하고 있습니까? – Wain

+1

변경 사항을 저장하지 않았을 수 있습니다. 가능성은 낮지 만 코드가 없거나 작동 방식에 대한 설명이 없으면 가장 확실한 가능성이 있습니다. –

+0

글쎄, 여기에 붙여 넣기에는 너무 많은 코드가 있기 때문에 이것을 일으킬 수있는 시나리오가 있는지 궁금합니다. 추가 테스트를 한 후에는 시뮬레이터에서 발생하지만 장치에서는 발생하지 않는 것처럼 보입니다. 장치는 저장된 데이터를 인식하고 처음부터 개체를 만들지 않습니다. 왜 시뮬레이터가 지속되지 않는지 아는 어떤 생각? – soleil

답변

0

시뮬레이터가 응용 프로그램을 배치 한 위치를 찾아 응용 프로그램의 모든 파일을 검사 할 수 있습니다. 당신은 영구 저장소가없는 경우는 응용 프로그램이 실행되지만 응용 프로그램이 시작하는 다음 번에 사라질 동안 지속될 것이라는 의미가 메모리에 유지 당신이 NSManagedObjectContext에서하는 모든 일 이래 NSLog(@"My database is at: '%@'", theDatabaseURL.path);

와이를 넣을 수 있습니다 제대로 설정되었거나 저장 조작이 트리거되지 않습니다.

코드의 일부분을 열고 데이터를 열고 초기화하고 저장하는 데 도움이 될 수 있습니다.

1

변경 후 컨텍스트를 저장하고 있는지 확인하십시오. 템플릿 방법은 다음과 같습니다 당신이 당신의 데이터베이스를 열려면

- (void)saveContext { 
    NSError *error = nil; 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    if (managedObjectContext != nil) { 
     if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 
      // Replace this implementation with code to handle the error appropriately. 
      // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
      NKLOG(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 
    } 
} 

, 당신은 SQLite Manager

라는이 파이어 폭스 애드온을 시도하고 당신의 .sqlite 파일을 검색 할 수 있습니다 앱의 기본 경로는 다음과 같습니다

/사용자/YOUR_USER/라이브러리/응용 프로그램 지원/아이폰 시뮬레이터/IOS_VERSION/응용 프로그램/GENERATED_HASH/문서/YOUR_APP.sqlite

+0

언급 한 firefox addon이 유용 할 것 같습니다. 설치했지만 앱의 핵심 데이터 DB 파일을 가리키는 방법은 무엇입니까? – soleil

+0

파이어 폭스 질문에 신경 쓰지 마라. 나는 그것을 알아 냈다. 자아의 차이점은 무엇입니까?objectContext save : 그리고 [[CoreDataController sharedController] saveContext]; ? 나는 둘 다 가지고있는 것처럼 보입니까? – soleil