3

我正在使用 Core Data 来存储一些与每个用户相关的简单字符串。当应用程序第一次启动时,一切似乎都很好。数据库打开,我成功地保存和检索数据。

但是,经过一些使用后,有时UIManagedDocument我使用的应用程序启动时将无法打开。这是我使用的方法(在应用程序委托中完成):

-(void)initManagedDocument{
@try {
    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"DataBase"];

    self.managedDocument = [[UIManagedDocument alloc] initWithFileURL:url];

    if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){

        [self.managedDocument openWithCompletionHandler:^(BOOL success){
            if (success) {
                [self documentIsReady];
            }else{
                NSLog(@"Could not open document");
            }

        }];

    }else{

        [self.managedDocument saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){

            if (success) {
                [self documentIsReady];
            }else{
                NSLog(@"Could not create document");
            }
        }];
    }
}
@catch (NSException *e) {

}

}

此代码从我的应用程序的didFinishLaunchingWithOptions. if 语句的saveToURL一半最初被调用,并返回成功。然后在接下来的几个调用中openWithCompletionHandler:被调用,并成功返回。

但是,在使用该应用程序一段时间后,openWithCompletionHandler:返回成功 = FALSE。我不知道为什么,或者是如何UIManagedDocument搞砸的。URL 似乎仍然相同,并且fileExistsAtPath仍在返回YES

有谁知道为什么会发生这种情况?或者,如果我有办法调试并找出导致打开失败的实际错误是什么?

4

0 回答 0