iOS比较功能

iOS比较功能,ios,objective-c,compare,Ios,Objective C,Compare,我试图理解编写比较函数的标准方法是什么 如果我有一个对象Person和一个属性age,并且想要编写我自己的比较函数。我想使用它,以便Person对象从低级到高级排序 i、 e 如果我现在运行[young compare:old]此操作是否应返回sensorderedescing或sensorderedescing 我不确定哪个对象是从哪个对象升序还是从哪个对象降序(如果有意义的话)。最简单的方法就是依靠现有的实现 - (NSComparisonResult)compare:(Person *)o

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

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

i、 e

如果我现在运行
[young compare:old]
此操作是否应返回
sensorderedescing
sensorderedescing


我不确定哪个对象是从哪个对象升序还是从哪个对象降序(如果有意义的话)。

最简单的方法就是依靠现有的实现

- (NSComparisonResult)compare:(Person *)other;
{
  return [@(self.age) compare:@(other.age)];
}

最简单的方法就是依靠现有的实现

- (NSComparisonResult)compare:(Person *)other;
{
  return [@(self.age) compare:@(other.age)];
}
结果:

[obj1 compare:obj2]
应该是:

  • sensorderedascending
    如果写入'obj1,obj2'时,对象按升序排列
  • nsorderedescending
    如果写入'obj1,obj2'时,对象按降序排列
  • sensorderedname
    否则
所以你应该看到:

[@2 compare:@3] == NSOrderedAscending
[@"b" compare:@"a"] == NSOrderedDescending
等等。记住它的方法是考虑从左到右阅读正在通话的人。

以下结果:

[obj1 compare:obj2]
应该是:

  • sensorderedascending
    如果写入'obj1,obj2'时,对象按升序排列
  • nsorderedescending
    如果写入'obj1,obj2'时,对象按降序排列
  • sensorderedname
    否则
所以你应该看到:

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

等等。记住它的方法是考虑从左到右阅读正在通话的人。

写一个方法,运行比较,看看顺序是否与您期望的一致,不是很简单吗?比张贴问题并等待答复更简单?是的,但如果我自己写的话,我可以把它放在任何地方。你如何放置它只有在它被使用时才有意义,因此如果你使用它,你将不仅仅是一个武断的决定(并且足以知道这个决定是有效的还是相反的)。如果要在NSArray中放置两个人对象,然后使用与猜测相符的比较函数对数组进行排序,则可以从输出中立即知道元素是否按照预期排序(->您的决定是正确的),或者与预期相反(->反转比较的意义以修复它)。或者,您可以在文档中查找实现
compare:
(例如
NSNumber
)的其他类,并查看它们返回的内容。@Sebastian我在来这里之前就这样做了。人们似乎不喜欢你在这里提问……用一种方式写出来,进行比较,看看顺序是否符合你的期望,这不是很简单吗?比张贴问题并等待答复更简单?是的,但如果我自己写的话,我可以把它放在任何地方。你如何放置它只有在它被使用时才有意义,因此如果你使用它,你将不仅仅是一个武断的决定(并且足以知道这个决定是有效的还是相反的)。如果要在NSArray中放置两个人对象,然后使用与猜测相符的比较函数对数组进行排序,则可以从输出中立即知道元素是否按照预期排序(->您的决定是正确的),或者与预期相反(->反转比较的意义以修复它)。或者,您可以在文档中查找实现
compare:
(例如
NSNumber
)的其他类,并查看它们返回的内容。@Sebastian我在来这里之前就这样做了。似乎人们不喜欢你在这里提问……回答得很好,非常感谢,这正是我想要的。回答得很好,非常感谢,这正是我想要的。