0

比較関数を書く標準的な方法が何であるかを理解しようとしています。

Personプロパティを持つオブジェクトがありage、独自の比較関数を記述したい場合。Person オブジェクトが年齢の低いものから高いものへと並べられるように使用したいと考えています。

すなわち

Person *young = [[Person alloc] initWithAge:10];
Person *old = [[Person alloc] initWithAge:80];

私が今実行した場合[young compare:old]、これは返す必要がありますNSOrderedDescendingNSOrderedAscending?

どのオブジェクトがどのオブジェクトから昇順または降順であるかはわかりません(それが理にかなっている場合)。

4

2 に答える 2

2

最も簡単な方法は、既存の実装に依存することです

- (NSComparisonResult)compare:(Person *)other;
{
  return [@(self.age) compare:@(other.age)];
}
于 2013-02-14T00:35:27.490 に答える
2

結果として:

[obj1 compare:obj2]

次のようにする必要があります。

  • NSOrderedAscending'obj1, obj2' と書かれている場合、オブジェクトは昇順です。
  • NSOrderedDescending'obj1, obj2' と書かれた場合、オブジェクトは降順です。
  • NSOrderedSameそれ以外は。

したがって、次のように表示されます。

[@2 compare:@3] == NSOrderedAscending
[@"b" compare:@"a"] == NSOrderedDescending

それを覚える方法は、呼び出しを行っている人を左から右に読むことを考えることです。

于 2013-02-14T01:36:19.203 に答える