2017-02-03 2 views
0

フィールドのintValueに基づいてNSSortDescriptorを使用して配列をソートしたいと思います。唯一の問題は、このフィールドはどんな値が含まれていないのどちらかということですので、いくつかの値が0である。しかし、私のランキングで、0年代には絶対来るべきNSSortDescriptor - 最後に0でintValueをソートする

 descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"lowerPrice.floatValue" ascending:YES]; 

:これは完全に次のコードを使用して動作します最終。基本的には、最初に0.1を、50とし、次に0とします。しかし、floatValueを昇順に使用すると、明らかに0が最初に取得されます。

これを解決する最もエレガントで簡単な方法は何ですか?

+0

私の代わりに 'NSComparisonResult'およびソートするブロックを使用することをお勧めしたい、しかし、あなたはCoreDataにその種を使用している場合、それは不可能です。 – Larme

+1

'sortDescriptorWithKey:ascending:comparator:'を使用してカスタムコンパレータを書くことができます – vadian

答えて

1

sortedArrayUsingComparator:を使用してください。これは、要素のペアを比較してその順序を返すために呼び出されるブロックをとります。ブロック内で最初にゼロをテストし、実際の数値の順序に基づいてゼロが戻らない場合は、適切な順序付けを返します(2つのゼロは等しい、0は他のものより大きい)。

HTH

関連する問題