0

取得したプロパティをデータ モデルのエンティティに追加しました。その述語を追加しませんでした。fetchRequestTemplateForName で取得しましたが、実行すると「executeFetchRequest:error: A fetch request must have an entity.」というエラーが発生しました。

しかし、どうしてこのエラーが発生するのでしょうか。取得したプロパティは私のエンティティのプロパティではありませんか?

したがって、問題をさらにデバッグし、取得した NSFetchRequest == nil が原因であることがわかりました

[[self managedObjectModel] fetchRequestTemplateForName:@"somename"];

では、どうすれば修正できますか?

ありがとう!

キュー

4

2 に答える 2

1

私の質問に答えてくれてありがとう。あなたが提案したように述語を追加しましたが、NSFetchRequestはまだnilを返しました。次に、実際にFetched Property NOT Fetch Requestをエンティティに追加したことに突然気付きました。これが、fetchRequestTemplateForNameがnilを返す理由です。だから私はフェッチリクエストを追加し(エディタメニューには「フェッチリクエストの追加」と「フェッチされたプロパティの追加」メニュー項目があります)、それで問題が修正されました!混乱してすみません:$。

しかし、私の質問は、フェッチ要求がすでにあるのに、なぜフェッチされたプロパティが必要なのかということです。アップルのドキュメントには、「フェッチされたプロパティは弱い一方向の関係を表している」と書かれていることは知っています。しかし、私はまだ混乱していると感じていますb/cフェッチ要求はもっと簡単に思えます。

于 2011-08-20T16:33:09.120 に答える
0

プログラムではなく、Xcode モデル エディターで取得したプロパティを作成したと仮定します。述語を入力する必要があります。そうしないと、フェッチするものがありません。したがって、 はNSFetchRequestとして返されnilます。

取得されたプロパティは、実際には、長々とした取得リクエストをコード時間で書き出すための便利なショートカットであり、永続化したくない結果に対しても繰り返し使用できます。コードで記述したコードが機能するかどうかを最初に確認NSFetchRequestしてから、それをモデルに転送するのが良いプロセスかもしれません。

于 2011-08-20T00:46:47.127 に答える