2012-03-28 6 views
1

10個のエンティティからなるデータモデルを1つ作成しました。数日後、そのエンティティの1つに属性を追加しました。私がこのアプリを実行するとき、このアプリはクラッシュしました。ですから、この問題を解決するのを助けてください。 ありがとうございます。iPhoneのデータモデルに追加されたデータベースに属性を追加する

+0

:その後アプリデリゲートのpersistentStoreCoordinator方法で自動マイグレーションを有効にします。あなたのアプリはクラッシュしています。ブレークポイントを使って解決しようとしましたか? – Devang

答えて

3

モデルを変更したら、デバイス/シミュレータでアプリケーションを削除して再インストールする必要があります。これは、既存のSQLite-DBが今変更されたモデルに適合しないためです。

+0

false。新しいモデルバージョンを作成し、その中に余分なエンティティ/属性を作成する必要があります。 – Eimantas

+2

確かに、これは、特に既に公開されているアプリの場合は、より良い解決策になります。私はそれがここに当てはまらないと仮定します。 –

+0

IMOそれは必要な時ではなく、最初から正しいことをすることです。 – Eimantas

-1

あなたはまだだけのアプリを開発している場合、最も簡単な答えは、単に削除することです

+0

false新しいモデルバージョンを作成し、その中に余分なエンティティ/属性を作成する必要があります。 – Eimantas

1

をアプリがすべてのターゲットをきれいにし、その後、構築し、また、シミュレータからアプリを削除してからアプリを構築する必要がありますし、それを再インストールしてください。

実際にデータベースの内容を保持したい場合は、コアデータをあるバージョンのスキーマから別のスキーマ(特定の注意事項を含む)に自動的に移行することができます。詳細はSee the documentationをご覧ください。

0

属性をエンティティまたはエンティティにモデルに追加する必要があるたびにアプリケーションをクラッシュさせたくない場合は、新しいモデルバージョンを作成し、その新しいバージョンを使用するように管理オブジェクトモデルを表示する必要があります。

新しいモデルのバージョンは、Editor -> Add Model version...に移動して作成できます。あなたのコードを投稿

NSError *error = nil; 
NSURL *storeURL = <#The URL of a persistent store#>; 
NSPersistentStoreCoordinator *psc = <#The coordinator#>; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

BOOL success = [psc addPersistentStoreWithType:<#Store type#> 
        configuration:<#Configuration or nil#> URL:storeURL 
        options:options error:&error]; 
if (!success) { 
    // Handle the error. 
} 
+1

あなたはアプリを開発している間、それは過労のようです。 –

+0

IMOそれは必要な時ではなく、最初から正しいことをすることについてです。 – Eimantas

関連する問題