0

私が書いた多くのコードを明確にして取り除くのに役立つように、質問を書き直していますが、実際には役に立ちません。

初期スキーマに .xcdatamodel を使用していますが、実行時にスキーマにエンティティを追加する必要があるため、新しい NSManagedObjectModel を追加し、既存のエンティティをコピーしてから、新しいエンティティを追加する必要があります。

最初に新しい NSPersistantStore を作成してから NSMigrationManager に移行を依頼すると、ファイルが既に存在するためソース モデルを移行先パスに移動できないというエラーが表示されます。

NSMigrationManager に移行を依頼すると、エラー コードやデバッガーに何も表示されずにクラッシュします。

NSMappingModel *mappingModel = [NSMappingModel inferredMappingModelForSourceModel:originalModel destinationModel:newModel error:&error];
NSMigrationManager *manager = [[NSMigrationManager alloc] initWithSourceModel:originalModel destinationModel:newModel];

if (![manager migrateStoreFromURL:[originalStore URL]
                             type:NSSQLiteStoreType
                          options:[self autoMigrationOptions]
                 withMappingModel:mappingModel
                 toDestinationURL:[NSPersistentStore MR_urlForStoreName:[self nextStoreName]]
                  destinationType:NSSQLiteStoreType
               destinationOptions:[self autoMigrationOptions]
                            error:&error])
{
    return NO;
}

URL はすべて適切で、コンソールにログを記録したときのマッピング モデルは適切に見えます。マネージャーが存在するなどです。この場合、まだ NSPersistantStore を作成していませんが、ストアがリンク先 URL を指定すると、自動的に作成されます。

誰にも手がかりがありますか?

4

0 に答える 0