Parent
ルートエンティティでありChild
、のサブクラスである階層に編成されたエンティティがあるとしParent
ます。NSArrayController
のエンティティのみを取得するように を設定したいのですが、 は取得しParent
ませんChild
。
Interface Builder でアレイ コントローラのエンティティ名を に設定するとParent
、すべてParent
のChild
エンティティが取得されます。最初に、Interface Builder で配列コントローラーのフェッチ述語を次のように設定しようとしました。
entity.name == "Parent"
これは XML ストアでは機能しましたが、SQLite ストアに切り替えると機能しなくなりました。次のエラーが表示されます。
keypath entity.name not found in entity <NSSQLEntity xxx>
回避策として、親エンティティのみをフィルター処理するためにフィルター述語 (entity.name
上記と同じ述語を使用) を設定しています。awakeFromNib
どうやら、エンティティがメモリ内にあると、その述語は有効になりますが、SQL を使用したフェッチ述語では使用できません。
SQLiteストアで動作するフェッチ述語を使用して、エンティティParent
のみをフェッチする方法はありますか? Child
フィルタ述語で無視するだけのエンティティを取り込むのは無駄に思えます。