これは、この投稿を行う方法ではありません。代わりに、私はそれがどのように機能するかを理解したいと思っています。うまくいけば、他の人も学ぶことができます.
この例では、NSDecimalNumber オブジェクトを含む NSMutableArray があるとします。内部のオブジェクトが順不同であるとしましょう[-464.50, +457.20, 0, -1000]
。それらを比較する前に、絶対値を適用します。
私のコードでは、sortUsingComparator
メソッドを使用してブロックを指定します。さまざまな条件のテストを開始しました。UITableView に表示される結果は次のとおりです。
return [person1Amount compare:person2Amount];
==> 0, 457.20, -464.50, -1000
もしも、
return [person2Amount compare:person1Amount];
==> -1000, -464.50, +457.42, 0
compare:
メソッドは実際にどのように機能しますか。ここのNSDecimalNumber
ドキュメントでは、実際には説明していません。この部分は特に私を混乱させます:
戻り値 decimalNumber の値が受信者より大きい場合は NSOrderedAscending。それらが等しい場合は NSOrderedSame。decimalNumber の値がレシーバーより小さい場合は NSOrderedDescending。
これは、配列内のオブジェクトの順序によってソート方法が決まるということですか? たとえば、person1.number < person2.number
配列を昇順でソートしますか? [person2Amount compare:person1Amount]
私のコードが正しい結果をもたらすのはなぜですか?
のように見えるperson2Amount is < person1Amount
ので降順でソートされますが、の場合person2Amount is > person1Amount
、昇順でソートされますか?
私の理解は正しくないようです。
ありがとう!