2012-01-12 2 views
0

처음으로 코어 데이터를 사용하고 있으며 내가보고있는 것이 맞다면 궁금합니다. Xcode를 통해 응용 프로그램을 실행할 때마다 데이터베이스가 존재하며 닫히고 열리고 있다고보고합니다. 다음에 앱을 실행해도 똑같은 일이 발생합니다 ...빌드간에 코어 데이터베이스가 닫힙니 까?

내 질문은 내가 직접 데이터베이스를 닫는 것이 아니며 어딘가에 문제가 있거나 iOS가 데이터베이스 자체를 닫으면 궁금합니다.

EDIT_001 : 코드가 추가되었습니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if([self planetDatabase] == nil) { 

     // CREATE MANAGED DOCUMENT 
     NSLog(@"Database: Setup"); 
     NSArray *userDocumentPath = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; 
     NSURL *databaseFileURL = [[userDocumentPath lastObject] URLByAppendingPathComponent:@"DefaultPlanetDatabase"]; 
     [self setPlanetDatabase:[[UIManagedDocument alloc] initWithFileURL:databaseFileURL]]; 

     // CHECK FOR EXISTING 
     if([[NSFileManager defaultManager] fileExistsAtPath:[databaseFileURL path]]) { 

      // OPEN IF CLOSED 
      if([[self planetDatabase] documentState] == UIDocumentStateClosed) { 
       NSLog(@"Database: Closed"); 
       [[self planetDatabase] openWithCompletionHandler:^(BOOL success) { 
        if(success)[self doWhatsNext]; 
       }]; 
      // USE IF NORMAL 
      } else if([[self planetDatabase] documentState] == UIDocumentStateNormal) { 
       [self doWhatsNext]; 
      } 
     // CREATE AND OPEN 
     } else { 
      [[self planetDatabase] saveToURL: [[self planetDatabase] fileURL] forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { 
       if(success)[self doWhatsNext]; 
      }]; 
     } 
    } 
} 

데이터베이스가 만들어 내가 엑스 코드 내에서이 코드를 실행 처음 "생성 및 OPEN"나는 "닫은 경우 OPEN"이 코드를 실행할 때 호출된다. 나는 이것이 정확하다고 가정하지만 Xcode가 실제로 빌드 사이에서 열린 데이터베이스를 닫는 지 확인하려고합니다.

+0

보고서, 종료 및 열기 란 무엇을 의미합니까? 어딘가에 몇 가지 로그 진술이 있습니까? 우리가 그들을 볼 수 있을까요? – jrturton

+0

나는 실제로 로그가 아닌 로그를 생성하는 코드를 의미했습니다! – jrturton

+0

프로젝트에서 "데이터베이스 :"를 찾으십시오. 나는이 코드를 모두 작성하지 않았으므로 표준 NSLog 문을 사용하여 문자열을 찾지 못해 문자열 공통성을 찾는 것이 진술을 찾는 최선의 방법 일 수 있다고 가정합니다. –

답변

1

SQLite 데이터베이스는 MySQL과 다릅니다. 그것은 어딘가에서 돌아가는 서버가 아닙니다. 앱 내의 코드 일뿐입니다. 따라서 NSPersistenStore를 추가하면 데이터베이스가 열리고 응용 프로그램이 종료되면 데이터베이스가 닫힙니다. 그것이 SQLite가 작동하는 방법입니다.

Xcode가 데이터베이스에 아무런 영향을 미치지 않습니다. 앱을 만지는 것뿐입니다.

+0

정확히 내가 무엇을했는지, 그것은 작은 것이었지만 일어난 일에 대한 나의 해석이 옳았는지 확인하고 싶었습니다. 대답 해 주셔서 대단히 감사합니다. – fuzzygoat

관련 문제