0

私の iOS プロジェクトには、バージョン管理された 2 つのデータ モデルがあります。

データ モデルの違いは、新しいモデルには「new_col」という名前の新しいフィールドがあることです。

プロジェクトの一部で、この「new_col」フィールドでフィルタリングされたデータをフェッチする必要があります。

そこで、以下のコードを使用しました。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"new_col = %@", val];
[request setPredicate:predicate];

NSArray *results = [context executeFetchRequest:request error:&err];

そして、私は例外に直面しました-「NSInvalidArgumentException」、理由:「キーパスnew_colがエンティティに見つかりません...

元のデータモデルが原因であることはわかっています。

元のデータを新しいデータ モデルに変換する必要があると思います。

どうすれば変換できますか?

4

2 に答える 2

0

新しい属性を追加し、下位互換性を維持したい場合は、新しい属性のデフォルト値を指定するか、コア データ エディターで「オプション」のままにしておく必要があります。

これが完了したら、自動移行が有効になっていることを確認する必要があります。これを行う方法の詳細については、コア データの「自動軽量移行」の実装を参照してください。既存/古いエンティティは、デフォルト値 (定義されている場合) または属性がオプションの場合は nil になります。

于 2013-04-08T15:33:13.530 に答える
0

クイックグーグル。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

これは Apple によってサポートされており、ユーザー データをあるモデルから別のモデルに移行する正しい方法です。

于 2013-04-08T15:32:35.800 に答える