2012-10-01 7 views
0

저는 첫 번째 IOS 애플리케이션을 만들고 JSON과 핵심 데이터를 사용하여 데이터를 가져오고 저장합니다.NSDocument가 열리지 않습니다

하지만 어떤 이유로 든 열리지 않습니다. NSDocument입니다. 이것이 내가하는 일이다.

- (void)useDocument 
{ 
    if (![[NSFileManager defaultManager] fileExistsAtPath:[self.genkDatabase.fileURL path]]) { 
     // does not exist on disk, so create it 
     [self.genkDatabase saveToURL:self.genkDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { 
      NSLog(@"test1"); 
      [self setupFetchedResultsController]; 
      NSLog(@"test12"); 
      [self fetchFlickrDataIntoDocument:self.genkDatabase]; 

     }]; 
    } else if (self.genkDatabase.documentState == UIDocumentStateClosed) { 
     NSLog(@"test2"); 
     // exists on disk, but we need to open it 
     [self.genkDatabase openWithCompletionHandler:^(BOOL success) { 
      NSLog(@"test4"); 
      [self setupFetchedResultsController]; 
      NSLog(@"test5"); 
     }]; 
    } else if (self.genkDatabase.documentState == UIDocumentStateNormal) { 
     NSLog(@"test3"); 
     // already open and ready to use 
     [self setupFetchedResultsController]; 
    } 
} 

- (void)setupFetchedResultsController // attaches an NSFetchRequest to this UITableViewController 
{ 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"News"]; 
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"News.title" ascending:YES]]; 
    // no predicate because we want ALL the Photographers 

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                     managedObjectContext:self.genkDatabase.managedObjectContext 
                      sectionNameKeyPath:nil 
                        cacheName:nil]; 
    NSLog(@"test10"); 
} 

내 로그를 보면 다음이 표시됩니다.

테스트 2 테스트 4 테스트 (10) 테스트 5

당신이 succefully을 열어 볼 수 있듯이. 그런 다음 setupFetchedResultsController 메서드를 실행합니다. 그런데 갑자기 멈 춥니 다. 나는 어떤 오류도 내지 않는다.

정상적으로해야 할 일은 fetchFlickrDataIntoDocument 방법입니다.

아무도 도와 줄 수 있습니까?

답변

0

이 방법은 [self fetchFlickrDataIntoDocument:self.genkDatabase];이 DB가 존재하지 않을 때 호출되어야하므로 문서 디렉토리 내의 디스크에 만들고 싶다고 생각합니다. 테스트를 실행할 때 DB는 이미 존재하며 프로그램을 열려고 시도하지 않았습니다. 기본적으로 조건문을 따르십시오 : if (self.genkDatabase.documentState == UIDocumentStateClosed). 나는 당신의 프로그램이 왜 fetchFlickrDataIntoDocument:self을 호출해야하는지 알지 못한다. DB가 존재하지 않을 때만 발생해야하기 때문이다.