我正在使用Core Data存储一些与每个用户相关的简单字符串。当应用程序首次启动时,一切似乎都很好。数据库打开,我成功地能够保存和检索数据。
但是,经过一些使用后,有时我使用的UIManagedDocument
将在应用启动时无法打开。这是我使用的方法(在app委托中完成):
-(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
如何搞砸了。该网址似乎仍然相同,fileExistsAtPath
仍在返回YES
。
有谁知道为什么会这样?或者,如果我有办法调试并找出导致开放失败的实际错误是什么?