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:success = FALSE が返されます。なぜ、またはどのようUIManagedDocumentに混乱するのかはわかりません。URL は同じようで、fileExistsAtPathはまだ を返してYESいます。

なぜこれが起こっているのか誰にも分かりますか?または、デバッグして、オープンが失敗する原因となっている実際のエラーを見つける方法がある場合は?

4

0 に答える 0