EODelegateSortingAndFiltering

2007/03/30 (Fri) 22:07:46 JST

ソートとフィルタリング

オブジェクトのソートとフィルタリングを行う?EOSortOrderingとEOQualifierでは、独自の比較用メソッドを定義することができます。 どちらのクラスもオブジェクトを選択する過程でオブジェクト同士の比較を行いますが、比較を行うのはそれぞれの(クラス下にある)?ComparisonSupportオブジェクトです。

比較するクラスを追加するには?ComparisonSupportのサブクラスを作り、次に示す比較用のメソッドを実装します。 次に?ComparisonSupport.setSupportForClassでクラスと?ComparisonSupportオブジェクトを登録します。 オブジェクトの評価時、オブジェクトのクラスが登録されたものであれば対応する?ComparisonSupportオブジェクトに比較処理がデリゲートされます。 どのメソッドが呼ばれるかはオペレータやソート順序によって異なります。

?EOSortOrdering.?ComparisonSupport

compareAscending
オブジェクト同士を昇順かどうか比較する。
compareDescending
オブジェクト同士を降順かどうか比較する。
compareCaseInsensitiveAscending
オブジェクト同士を昇順かどうか比較する。ただし大文字と小文字の違いを無視する。
compareCaseInsensitiveDescending
オブジェクト同士を降順かどうか比較する。ただし大文字と小文字の違いを無視する。

EOQualifier.?ComparisonSupport

かっこ内はEOQualifierフォーマットに対応するオペレータです。

doesContain
オブジェクトがもう1つのオブジェクトを含むかどうか比較する。
isEqualTo
(=)オブジェクト同士が等しいかどうか比較する。
isNotEqualTo
(!=, <>)オブジェクト同士が等しくないかどうか比較する。
isGreaterThan
(>)オブジェクトがもう1つのオブジェクトより大きいかどうか比較する。
isGreaterThanOrEqualTo
(>=)オブジェクトがもう1つのオブジェクトより大きい、もしくは等しいかどうか比較する。
isLessThan
(<)オブジェクトがもう1つのオブジェクトより小さいかどうか比較する。
isLessThanOrEqualTo
(<=)オブジェクトがもう1つのオブジェクトより小さい、もしくは等しいかどうか比較する。
isLike
(like)オブジェクトがパターンにマッチするかどうか比較する。
isCaseInsensitiveLike
(caseInsensitiveLike)オブジェクトがパターンにマッチするかどうか比較する。ただし大文字と小文字の違いを無視する。

Inverse Pages: WebObjects基礎研究室