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:
success = FALSE が返されます。なぜ、またはどのようUIManagedDocument
に混乱するのかはわかりません。URL は同じようで、fileExistsAtPath
はまだ を返してYES
います。
なぜこれが起こっているのか誰にも分かりますか?または、デバッグして、オープンが失敗する原因となっている実際のエラーを見つける方法がある場合は?