2012-01-02 16 views
20

私の最初のiOSアプリケーションの1.1リリースでほとんど終了しました。私はコアデータモデルに2つの小さな変更を加えました。具体的には、私は自分のテーブルの1つに2つの属性を追加しました。これは私の最初のコアデータアプリであり、したがって私の最初のコアデータはライブアプリケーションに更新されています。私は現在のユーザーにとってはうまくいかないかもしれない出荷コードについて少し神経質です。それは小さな更新版なので、私はApplesの自動移行メソッドが実行すると推測していますが、私は推測したくありません。更新されたコアデータモデルでiOSアプリケーションを更新

関連するコードは次のようになります。

NSError *error = nil; 
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) 
{ 

    //NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
}  

1.1で、私はNSDictionary *optionsを追加しました。 、基本的に

if (currentPage.inputType == @"drawing") { 
    [pageView changeToDrawing]; 
} else if (currentPage.inputType == @"text") { 
    [pageView changeToText]; 
} else { 
    currentPage.inputType = @"text"; 
    [pageView changeToDrawing]; 
} 

これらの変化に十分であるか、私は他の何かをしなければならない操作を行います。私のビューコントローラで

は私が必要な行はこのようにnilでないことを確認してください?

答えて

24

Here is a very helpful articleあなたの質問に答えるコアデータのバージョン管理に関しては、

いくつかの言葉でまとめると、プロジェクトに新しいモデルバージョンを追加する必要があります。これは移行プロセスに必要です。

編集

上記のリンクは変更されており、以下のリンクにリダイレクトされます。他のすべてが失敗した場合Core Data Model Versioning and Data Migration

、グーグル:Core Data Model Versioning and Data Migration apple developer

+0

あなたの答えをありがとう、私は1つの関連する質問があります。新しいモデルバージョンを作成する前に属性を追加しました。私の1.0バージョンから新しい属性を削除し、2.0データモデルバージョンでのみ使用するかどうかは重要ですか?ありがとう! – Anders

+2

絶対にそれらを1.0から削除し、次のバージョンに追加する必要があります。私は最近この事実によってちょっとしたことがありました。 1.0は*現在*デプロイされているものとまったく同じ*である必要があります。そうしないと例外が発生します。これには、属性と関係の両方が含まれます。 – Jeremy

+0

ああ、ありがとう。それは働くようになった。あなたが提案したとおりにしました。 :) – Anders

関連する問題