0

次の問題があります:会話に更新する必要があるChatというモデルがあります (ニーモニックの問題のみ)。xcdatamodel ファイルで名前を変更しましたが、生成されたファイルは引き続き Chat のままです。

これを踏まえて、「まあ、そのままにしてチャットをもう一度使用する」ことにしましたが、チャットモデルで次のような操作を実行しようとすると、次のようになります。

Chat * chat = [Chat MR_findFirstByAttribute:@"cId" withValue:convId];

アプリは次のように言ってクラッシュします。

*** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'executeFetchRequest:error: フェッチ要求にはエンティティが必要です。


アプリをクラッシュさせる関連する NSManagedObject のエンティティ名の内部エラーを想定しています。

Chat および Chat+CoreDataProperties ファイルを削除して、正しい名前 (Conversation) で新しいファイルを生成しようとしましたが、Chat 名への参照が xcdatamodel に存在することもわかりました (ソースとして開いています)。ファイル) キーの下

<entity name="Conversation" representedClassName="Chat" syncable="YES">

会話に変更すると、動作は再び同じになります。

それを解決するための助けをいただければ幸いです

4

1 に答える 1

0

MagicalRecord フレームワークは、クラス名とエンティティ名が同じであることを前提としています。次のいずれかを実行できます

  • 「Chat」へのすべての参照を「Conversation」に変更して、新しいエンティティ名を使用します。これは、単純なグローバル テキスト置換で実現できます。

  • MagicalRecord を放棄し、独自の Core Data スタックを使用します。次に、モデル、エンティティ、およびクラス名の非標準パターンを好きなだけいじることができます。

一般に、サード パーティのフレームワークを使用することを選択した場合は、その要件に合わせて習慣を調整する必要があります。この特定の要件は明らかではありませんでしたが、あなたのエラーから、一致しないエンティティ/クラス名が問題を引き起こすことは明らかです。

于 2015-12-06T13:00:26.027 に答える