2012-02-15 2 views
0

그래서 이것은 엿 같습니다. NSDictionaries의 정보로 코어 데이터 데이터베이스를 채우려고합니다.핵심 데이터 "연결이 잘못되었습니다."

아래 코드를 사용하여 UIManaged Document를 열고 완성 처리기 블록은 API에서 사전을 재귀 적으로 채우는 메소드를 호출하고 각각에 대해 데이터베이스에 대한 엔티티를 추가합니다.

데이터베이스 파일이 잘 작성되고 사전에 대량 자료가 채워지고 엔티티 객체도 채워지지만 어떤 이유로 정보가 데이터베이스에 쓰지 않는 경우가 있습니다. 뭐가 달라 졌는지 확인하십시오.

나는 말한다 콘솔에 메시지를 얻을 :

"NSFileCoordinator :. 예상치 못한 서버 오류가 신호 된 세부 사항 : 연결 무효"

때마다 방법 openWithCompletionHandler 또는 saveToURL : forSaveOperation : withCompletionHandler 실행.

스탠포드 아이폰 코스에서 잘라내어 붙여 넣기 한 경우 아래 코드가 작동하지 않는 이유를 이해할 수 없습니다.

시뮬레이터에서 앱을 삭제하려고 시도했지만 차이는 없습니다. 이것은 여러 시간 동안 내 머리를 망가 뜨 렸습니다. 어떤 도움을 주셔서 감사합니다.

+ (void)populateDatabase 
{ 
// Get URL -> "<Documents Directory>/<TrailerDB>" 
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 

url = [url URLByAppendingPathComponent:@"TrailerDB"]; 

UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url]; 

// If document exists on disk... 

if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) 
{ 
    [doc saveToURL:url 
    forSaveOperation:UIDocumentSaveForCreating 
completionHandler:^(BOOL success) 
    { 

     if (success) [self fillDatabase:doc.managedObjectContext]; 

     if (!success) NSLog(@"couldn’t open document at %@", url); 
    }]; 

} else { 

    if (doc.documentState == UIDocumentStateClosed) { 
     // exists on disk, but we need to open it 
     [doc openWithCompletionHandler:^(BOOL success) 
     { 

      if (success) [self fillDatabase:doc.managedObjectContext]; 

      if (!success) NSLog(@"couldn’t open document at %@", url); 
     }]; 
    } else if (doc.documentState == UIDocumentStateNormal) 
    { 
     [self fillDatabase:doc.managedObjectContext]; 
    } 
} 
} 

답변

3

fillDatabase 후,이 메서드를 호출하려고 :

[doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) 
{ 
    if (success == NO) 
    { 
     NSLog(@"Save operation failed!"); 
    } 
}]; 
+0

네 환호 다니엘, 난 사실이 밖으로 생각했지만 대답은 내 자신의 질문이 허용되지 않았다! 내가 얻은 오류 메시지가 무해한 것 같습니다. 내가 확인하고 그것은 또한 동일한 코드를 사용하고 완전히 작동하는 내 다른 애플 리케이션에 나타납니다. – Alan