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