0

これはよく議論されていますが、私が見つけたものは何も役に立ちませんでした...単一のエンティティに単一の属性を追加したいだけです。当然のことながら、データを失うことはありません。

そのために、次の手順に従いました

しかし、私はそれがまったく機能しなかったと思います。新しい属性を使用しようとしない限り、エラーは発生しません。しかし、コア データ モデル (XCode で .xcdatamodel を開くと) にはそこにあり、エンティティの NSManagedObject サブクラスにも、新しい属性がプロパティとして存在します。しかし、私がそれを使用しようとすると、これが起こります:

unrecognized selector sent to instance 0x74f8520

また

the entity Name is not key value coding-compliant for the key "isFavoriteName".'

キー「isFavoriteName」は、先ほど追加したものです。先ほど言ったように、すべての手順を実行しました。私は何かが恋しいですか?モデルのいくつかの属性を削除しても、アプリは引き続き機能し、削除された情報は引き続き表示されるため、新しいモデル バージョンは使用されていないと思います...現在のコア データ モデル バージョンを新しいバージョンに設定しました(ステップ 6)。

あなたが私を助けてくれることを願っています!

ニック

編集:コードでも何かを変更する必要がありますか? persistStoreCoordinator を作成するときのオプションの設定とは別に...たとえば、myApp.xdatamodel があり、その中に myApp.xdatamodel と myApp 2,xdatamodel があることを知っているので、私は自分のコードを実行します:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"mom"];

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
4

1 に答える 1

3

そうです - あなたがリンクしたページは、あなたの場合に適用される 1 つのステップを省きました。モデルの新しいバージョンを作成したにもかかわらず、コードはまだ古いバージョンを名前でロードしています。

ただし、バージョン 2 をロードするように変更しないでください。代わりにこれを行います:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"momd"];

これにより、フォルダーが検索され、momd現在のバージョンが何であれ取得されます。この場合、バージョン 2 が取得されます。将来モデルを再度変更すると、その時点で最新のバージョンが取得されます。

于 2013-02-08T21:28:36.487 に答える