2011-07-31 4 views
1

データベースからオブジェクトを取得するたびに、すべてのオブジェクトが取得されます。さて、私は、データベースに格納されているオブジェクトの一部のみを取り出し、テーブルビューで表示する必要があります。Bool属性に一致するオブジェクトのみを取得する方法

これを行うには、私のエンティティ、BOOL属性に新しい属性を追加することを考えました。この属性の値が状況に応じてYESまたはNOに等しいオブジェクトのみをフェッチできます。

このようなことは可能ですか?

私はメソッドが有用かもしれないNSFetchRequestクラスを見つけましたが、私はそれを使ってBOOLの別の値を見ることができるかどうかわかりません。

答えて

3

ちょうど述語を使いたいと思うようです。 NSPredicate Class Referenceは、それらをどのように使用するかの良いアイデアを与えます。基本的には、結果にフィルタを追加します。たとえば、属性がmyBoolでBOOL(ただしNSNumberとして格納されている)のコアデータオブジェクトがあるとします。その結果に基づいて結果をフィルタリングするには、次のようなものを使用します。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myBool == %@", [NSNumber numberWithBool:YES]]; 
[fetchRequest setPredicate:predicate]; 

次に正常に処理します。これにより、myBoolの値がYESの結果だけが返されます。

これは、単純にtableViewを作成する要求を使用している場合は、NSFetchedResultsControllerを使用する方がよい場合があります。それを実装する方法に関する偉大なチュートリアルはhere見つけることができます。

+2

+1データモデル内のエンティティに属性を追加するだけで表示できるようにする必要があります。エンティティプロパティは、アプリケーションが扱う実際のオブジェクト、イベント、または条件のプロパティを厳密に模倣する必要があります。例えば、あなたが人とアプリケーションを扱っていて、 'Person'オブジェクトを持っている場合、' firstName'プロパティはありますが、 'displayInThirdView'プロパティはありません。最初のものは実際の人物の属性ですが、後者はデータモデルに属していない実装の詳細です。 – TechZen

+0

ありがとうございました...これはとてもうまくいく;)私はより頻繁に述語を使用しなければならない:D – matteodv

関連する問題