0

我试图了解编写比较函数的标准方法是什么。

如果我有一个Person具有属性的对象age并想编写自己的比较函数。我想使用它,以便 Person 对象从低年龄到高年龄排序。

IE

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

如果我现在运行[young compare:old]应该返回NSOrderedDescending还是NSOrderedAscending

我不确定哪个对象从哪个对象上升或下降(如果有道理的话)。

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 回答