2012-08-22 2 views
1

UIManagedDocument에서 파생 된 컨텍스트로 CoreData에 관한 질문이 있습니다.편집을 위해 UIManagedDocument를 열 수 없습니다.

아래의 코드 조각에서는 "문서를 여는 중 오류가 발생했습니다"는 기록은 없지만 항상 "문서가 아직 닫혀 있습니다"- 문서를 열 수없는 이유는 무엇입니까? 어떤 아이디어라도 제발?

-(void)openDocument 
{ 
    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory  inDomains:NSUserDomainMask] lastObject]; 
url = [url URLByAppendingPathComponent:@"Default Date Database"]; 

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

    if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]]) 
    { 
     [document openWithCompletionHandler:^(BOOL success){ 
      if (!success) { 
      // Handle the error. 
      NSLog(@"Error opening the document"); 
      } 
     }]; 
    } 
    else 
    { 
     [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){ 
     if (!success) { 
      // Handle the error. 
      NSLog(@"Error saving the file"); 
      } 
     }]; 
    } 

    self.theDocument = document; 


    if (self.theDocument.documentState == UIDocumentStateClosed) 
    { 
     NSLog(@"Document still closed!"); 
    } 

} 

답변

2

openWithCompletionHandler는 비동기 방법이다. 문서를 열고 읽는 데 필요한 배경 스레드 만 시작합니다. documentState을 확인하면이 백그라운드 스레드가 아직 완료되지 않았으므로 상태는 여전히 "닫혀 있습니다".

openWithCompletionHandler은 문서를 열었을 때 (또는 실패했을 때) completionHandler 블록을 실행합니다.

+0

. 저는 같은 일에 너무 많은 시간을 보냈습니다. OS가 파일을 여는 데는 (놀라운) 긴 시간이 걸립니다. –

+0

@ John67 : 내 대답이 도움이 되었습니까? 그러면 대답을 "받아 들일"수 있다면 좋을 것입니다. –

관련 문제