2012-07-22 9 views
0

데이터를 잘 가져오고 내보내는 핵심 데이터 모델이 있습니다. 내 응용 프로그램의 작동 방식은 데이터베이스에서 JSON 파일을 다운로드하여 구문 분석하고 핵심 데이터 모델을 플러시 한 다음 데이터를 다시 추가하는 것입니다 (사실상 로컬 데이터 모델 새로 고침).핵심 데이터는 앱이 다시 시작될 때까지 변경되지 않습니다.

데이터베이스를 변경하면 변경 사항이 JSON 파일에 반영되지만 앱을 다시 시작 (다시 끝내기, 다시 열기) 할 때까지 핵심 데이터 모델에 반영되지 않습니다.

내가 데이터베이스를 비우는 것과 관련이 있는지 확인하려면 확실하지만 내 손가락을 넣을 수는 없습니다. 아래에 몇 가지 코드가 포함되었습니다.

내가 데이터 모델 세척하는 사용하고있어서

내가 데이터 모델에 데이터를 추가하기 위해 사용하고 코드의
- (void)resetCoreData; 
{  
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"AppWithCoreData.sqlite"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    [fileManager removeItemAtURL:storeURL error:NULL]; 

    NSError* error = nil; 

    if([fileManager fileExistsAtPath:[NSString stringWithContentsOfURL:storeURL encoding:NSASCIIStringEncoding error:&error]]) 
    { 
     [fileManager removeItemAtURL:storeURL error:nil]; 
    } 

    persistentStoreCoordinator = nil; 
    managedObjectContext = nil; 

    [self managedObjectContext]; // Rebuild Object Context  
} 

한 줄 :

[model setValue:[dictionary objectForKey:@"eventID"] forKey:@"eventID"]; 
+0

나중에 데이터를 다시 가져 옵니까? 또한 이것을보십시오 : http://stackoverflow.com/a/5770216/730701. 유일한 차이점은 컨텍스트를 nil로 설정하기 전에 파일을 제거하고 그 사람이 파일을 삭제한다는 것입니다. – Adam

+0

예,이 메서드를 호출 한 다음 데이터를 다시 가져옵니다. 오류없이 저장됩니다. 컨텍스트를 설정 한 후 두 줄을 이동 한 후 저장하려고하면 오류가 발생합니다. 저장할 수 없습니다 : 작업을 완료 할 수 없습니다. (코코아 오류 134030. –

답변

2

일반적으로 코어 데이터 저장소에 변경 사항을 저장해야 할 경우이를 저장해야합니다.

당신이 디스크에 저장됩니다 수행 한 변경됩니다 이러한 방식으로

NSError* error = nil; 
[managedObjectContext save:&error]; 

를 호출 할 필요가 그것을 달성하기 위해. 사실 특정 엔티티의 속성 값을 단순히 변경하면 메모리에서만 사용할 수 있습니다.

변경 사항은 다음 재시작시에만 사용 가능하다고 가정합니다. 응용 프로그램 대리인이 applicationWillTerminate 대리자를 수신하고 거기에서 컨텍스트를 저장하기 때문에. Xcode 템플릿과 함께 제공되는 Core Data Stack을 사용하고 있습니까?

가능한 경우 더 자세한 정보를 입력하면 도움을 드릴 수 있습니다.

희망이 있습니다.

+0

) 죄송합니다. 저장을 부르 겠지만, 나는 어리석게도 그 것을 버렸습니다. 코어 데이터 템플릿을 사용하지 않고 나중에 코어 데이터를 추가했습니다. 핵심 데이터에 대한 다른 모든 것은 작동하지만, 이것도 마찬가지입니다. 지금까지 도와 줘서 고마워. –

+0

@AlexGodbehere 다른 세부 정보를 제공해 주시겠습니까? –

+0

오케이, 업데이트가 있습니다. 응용 프로그램을 시작한 후에 모델에서 데이터를 다운로드했지만 대개 데이터를 삭제하고 새 데이터를 추가하기 전에 데이터를 다운로드했습니다. 결과가 비어 있습니다. 따라서 데이터가 처음부터 저장되어서는 안됩니다. 나는 이것이 이상을보고하지 않기 때문에 이상하다고 생각한다. 어떤 다른 정보를 원하십니까? –

관련 문제