だからこれはひどい。NSDictionaries からの情報をコア データ データベースに入力しようとしています。
以下のコードを使用して UIManaged Document を開きます。完了ハンドラー ブロックは、API から辞書を再帰的に入力し、データベースごとにエンティティを追加するメソッドを呼び出します。
データベースファイルは正常に作成され、辞書は正常に作成され、エンティティオブジェクトも作成されていますが、何らかの理由で情報がデータベースに書き込まれていません。違う。
コンソールに次のメッセージが表示されます。
「NSFileCoordinator: 驚くべきサーバー エラーが通知されました。詳細: 接続が無効です」
メソッド openWithCompletionHandler または saveToURL:forSaveOperation:withCompletionHandler が実行されるたびに。
以下のコードは、スタンフォード大学の iphone コースから切り取って貼り付けたものなのに、なぜ機能しないのか理解できません。
シミュレーターからアプリを削除しようとしましたが、違いはありません。これは何時間も頭を悩ませてきました。助けていただければ幸いです。
+ (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];
}
}
}