2

昨日、NSManagedObject のサブクラスである "User" クラスを拡張しました。通常の方法で、「photoPath」という名前の新しいプロパティを追加しました。

@property (nonatomic, retain) NSString * photopath;
@dynamic photoPath;

データ モデルの新しいバージョンを追加し、データ移行を正常に実装しました。すべてが完璧に機能しました!...今から。今日、新しいプロパティにアクセスすると、アプリがクラッシュして次のように表示されます。

-[User photoPath]: unrecognized selector sent to instance xxx

昨日からコードに触れていません。Xcodeを閉じて再度開いただけです。

では、アプリを 1 日に動作させ、次の日にクラッシュさせる f*** マジックとは何でしょうか? CoreData が .momd のようなファイルを生成することは知っています。私はすべてを掃除しました。なにか提案を?

coreData は古いオブジェクト モデルにとどまっているようで、その理由はわかりません.....

編集 :

Project.sqlite ファイルを確認すると、「photoPath」列さえ存在しません。何か案が?

4

2 に答える 2

1

わかった

もちろん、私の .xdatamodeld (Versioned Core Data Model) の下では、適切なバージョンが選択されました。投稿する前にそれを 3 回確認しました。

しかし、私はまだ古いものを選択して保存し、新しいものを再選択して保存しようとしました。

そして、それは動作します...

Xcode のおかげで 2 時間も無駄になりました

編集:プロジェクトを閉じて再度開くたびに問題が発生します。アプリを起動する前に、常に上記の手順を実行する必要があります。とても迷惑です。誰かがより良い解決策を知っていれば、私は彼の答えを受け入れます。

于 2013-02-01T15:28:11.923 に答える
1

コア データ モデルまたはサブクラスを変更した後、私が常に行う 2 つのこと。デバイス/シミュレーターからアプリのインスタンスを削除します。プロジェクトをクリーンアップします。

于 2013-02-01T14:51:31.307 に答える