我正在使用 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
。
有谁知道为什么会发生这种情况?或者,如果我有办法调试并找出导致打开失败的实际错误是什么?