2012-02-15 15 views
0

これはうんざりです。 NSDictionariesからの情報をコアデータデータベースに取り込もうとしています。私は以下のコードを使用してUIManaged文書を開くコアデータ「接続が無効です」

、完了ハンドラブロックは、次に、再帰的APIから辞書を移入し、それぞれのデータベースのためのエンティティを追加するメソッドを呼び出します。

データベースファイルはきれいに作成され、辞書には大量のデータが入力され、エンティティオブジェクトも入力されますが、何らかの理由で情報がデータベースに書き込まれません。何かが違うかどうか確かめてください。

は、私が言うのコンソールにメッセージが表示されます:

"NSFileCoordinator:意外なサーバーエラーが通知されました詳細:接続無効"

たび方法openWithCompletionHandlerまたはsaveToURL:forSaveOperation:withCompletionHandlerラン。

次のコードは、それがスタンフォードiphoneコースから切り取って貼り付けますことを考えると動作しない理由を私は理解できません。

私はシミュレータからアプリを削除しようとしましたが、違いはありません。これは何時間も私の頭を壊しています。 fillDatabase後

+ (void)populateDatabase 
{ 
// Get URL -> "<Documents Directory>/<TrailerDB>" 
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 

url = [url URLByAppendingPathComponent:@"TrailerDB"]; 

UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url]; 

// If document exists on disk... 

if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) 
{ 
    [doc saveToURL:url 
    forSaveOperation:UIDocumentSaveForCreating 
completionHandler:^(BOOL success) 
    { 

     if (success) [self fillDatabase:doc.managedObjectContext]; 

     if (!success) NSLog(@"couldn’t open document at %@", url); 
    }]; 

} else { 

    if (doc.documentState == UIDocumentStateClosed) { 
     // exists on disk, but we need to open it 
     [doc openWithCompletionHandler:^(BOOL success) 
     { 

      if (success) [self fillDatabase:doc.managedObjectContext]; 

      if (!success) NSLog(@"couldn’t open document at %@", url); 
     }]; 
    } else if (doc.documentState == UIDocumentStateNormal) 
    { 
     [self fillDatabase:doc.managedObjectContext]; 
    } 
} 
} 

答えて

3

、このメソッドを呼び出してみてください。

[doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) 
{ 
    if (success == NO) 
    { 
     NSLog(@"Save operation failed!"); 
    } 
}]; 
+0

うん歓声ダニエル、私は実際にこれを考え出していたが、自分の質問に答える許されませんでした!私が得たエラーメッセージは無害だったようです。私はチェックし、それは同じコードを使用し、完全に機能している私の他のアプリにも現れます。 – Alan

関連する問題