0

AppStore で数か月間公開されているアプリを保守しています。私のアプリは Core Data を使用していますが、どうにか xcdatamodel の以前のバージョンをすべて失うことができました。

軽量の移行を実行したいと考えています。エンティティの 1 つに 1 つの属性を追加するだけです。したがって、モデル バージョンを作成する正しい手順に従いました。

どうやら、元の xcdatamodel を変更したようです。そのため、移行をテストすると、コード = 134130「ソース ストアのモデルが見つかりません」というエラーで失敗します。デバイス/シミュレーターに sqlite ファイルがなくてもアプリは正常に動作するため、元の xcdatamodel が変更されたと結論付けました。

これまでの私の論理が成り立つと仮定すると、ユーザーのデバイス上の sqlite ファイルと一致する xcdatamodel を作成するにはどうすればよいでしょうか。彼らがデータを失うことは受け入れられません。

ありがとうございました。

4

2 に答える 2

2

Apple の Core Dataバージョン管理ガイドラインによると、Core Data の 2 つのバージョンは、次の場合に同一として扱われます。

  • エンティティごとに、name、parent、isAbstract、および properties の属性が等しくなければなりません。className、userInfo、および検証述語は比較されません。

  • 各エンティティの各プロパティについて、属性 attributeType については name、isOptional、isTransient、isReadOnly、リレーションシップについては destinationEntity、minCount、maxCount、deleteRule、および inverseRelationship の各属性が等しくなければなりません。

現在の xcdatamodel が完全に新しいファイルである場合、元のバージョンと現在のバージョンが一致することはないと思います。ただし、現在のバージョンが誤って変更された元のバージョンにすぎない場合は、以前に生成されたモデル ファイルを調べて、何が変更されたかを把握することができます。

例: モデルでは "NSString *age" プロパティがありましたが、現在の xcdatamodel ではプロパティは "NSNumber *age" です。

また、表示されているエラーは、生成されたモデル ファイルが DB と同期していないことが原因である可能性があるため、それらを再作成してみてください。

于 2012-09-25T13:01:04.627 に答える
0

Core Data モデル ファイル (空のファイルなど) を開いた状態で を選択し、以前のバージョンのアプリEditor -> Importのファイルを見つけます。.mom

この回答を参照してください。

于 2012-09-25T08:24:18.083 に答える