Iphone 核心数据数据库在构建之间关闭?

Iphone 核心数据数据库在构建之间关闭?,iphone,objective-c,xcode,cocoa-touch,core-data,Iphone,Objective C,Xcode,Cocoa Touch,Core Data,我第一次使用核心数据,只是好奇我看到的是否正确。每次我通过Xcode运行应用程序时,它都会报告数据库已存在、已关闭并且正在打开。下次我运行应用程序时,同样的情况也会发生 我的问题是,我自己并没有关闭数据库,我只是好奇我是否有什么地方出错,或者iOS是否正在关闭数据库本身 编辑\u 001:添加了代码。 - (void)viewDidLoad { [super viewDidLoad]; if([self planetDatabase] == nil) { //

我第一次使用核心数据,只是好奇我看到的是否正确。每次我通过Xcode运行应用程序时,它都会报告数据库已存在、已关闭并且正在打开。下次我运行应用程序时,同样的情况也会发生

我的问题是,我自己并没有关闭数据库,我只是好奇我是否有什么地方出错,或者iOS是否正在关闭数据库本身

编辑\u 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”,下一次运行此代码时调用“openif CLOSED”。我假设这是正确的,但我只是想验证Xcode是否确实在构建之间关闭了开放数据库。

SQLite数据库与MySQL不同。它不是在某处运行的服务器。它只是应用程序中的代码。因此,当您添加NSPersistenStore时,数据库将打开,当您的应用程序关闭时,数据库将关闭。SQLite就是这样工作的


Xcode对数据库没有任何作用。只是你的应用程序在触摸它。

你所说的报告、关闭和打开是什么意思?你有什么日志记录吗?我们能看到它们吗?我实际上指的是生成日志的代码,而不是日志本身!我首先在项目中查找“数据库”。我假设您没有编写所有这些代码,因此他们可能没有使用标准的NSLog语句来生成这些代码,因此搜索字符串公共性可能是找到这些语句的最佳选择。这正是我所追求的,只是一个小问题,但我想确保我对发生的事情的解释是正确的。非常感谢你的回答,非常感谢。