7

そこで、データモデルの新しいバージョンを作成し、以前はオプションだったフィールドをオプションではないものにしました(デフォルト値を指定)。ドキュメントによると、これは私の移行が軽量の自動移行に適格であることを意味するはずです。

また、ドキュメントに従って、ストアを開いたときにこれを可能にするオプションを追加しました。

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

ただし、アプリの起動時に、次のエラーが発生します。

「移行用のマッピングモデルが見つからないか、自動的に推測できません」。

ここでの問題が何であるかを誰かが知っていますか?どんな助けでもありがたいです...ありがとう!

4

1 に答える 1

2

おそらくこれを見たことがあるでしょうが、そうでない場合は...軽量コアデータ移行の検出

他のデバッグ コードに関しては、これが役立つことがわかりました。

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]];

NSError *error = nil;
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:storeUrl error:&error];

if (!sourceMetadata)
{
    DLog(@"sourceMetadata is nil");
}
else
{
    DLog(@"sourceMetadata is %@", sourceMetadata);
}

最後に、これはちょっと面倒ですが、Finder でアプリの「パッケージの内容を表示」すると、.momd というフォルダーが見つかり、その中に「VersionInfo.plist」というファイルがあります。これは、何を持っているか、どこに行こうとしているのかを特定するのに役立ちました。

最後に、マッピング モデルを作成して、それが機能するかどうかを確認します。私は移行の問題に何週間も取り組んできたので、必死のデバッグ試行の長いリストができました。

于 2010-10-27T23:23:55.533 に答える