Закрытие базы данных Core Data между сборками? - PullRequest
0 голосов
/ 12 января 2012

Я впервые использую Core Data, и мне было просто любопытно, верно ли то, что я вижу.Каждый раз, когда я запускаю приложение через 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];
            }];
        }
    }
}

При первом запуске этого кода из Xcode база данных создается «CREATE AND OPEN» при следующем запускеэтот код "ОТКРЫТ, ЕСЛИ ЗАКРЫТ" называется.Я предполагаю, что это правильно, но я просто пытаюсь проверить, действительно ли Xcode закрывает открытую базу данных между сборками.

1 Ответ

1 голос
/ 16 января 2012

База данных SQLite не похожа, скажем, на MySQL. Это не сервер где-то работает. Это просто код внутри вашего приложения. Следовательно, когда вы добавляете NSPersistenStore, база данных открывается, а когда ваше приложение закрывается, база данных закрывается. Вот как работает SQLite.

Xcode ничего не делает с вашей базой данных. Это просто ваше приложение прикасается к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...