【问题标题】:Sort Array of NSString By Custom Method按自定义方法对 NSString 数组进行排序
【发布时间】:2010-11-15 20:52:08
【问题描述】:

我将如何通过自定义方法对 NSString 对象数组进行排序。例如我有一个方法

-(int)calculateValue:(NSString *)aString

我想根据此方法的返回值按降序对数组进行排序。所以例如我有一个数组

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"Apple", @"Bee", @"Super", nil];

现在,如果我为每个字符串调用 calculateValue,它可能会返回诸如此类的值。

“Apple”= 15、“Bee”= 21 和“Super”= 3。现在我尝试根据 calculateValue 方法中每个 NSString 的返回值对该数组进行排序。那么排序后的数组会喜欢

[Bee, Apple, Super]

【问题讨论】:

  • “基于返回值”是什么意思?这个方法做什么/返回什么?
  • calculateValue 只是根据字符串返回一个 int 值。因此,apple 可能会返回 15,而able 可能会返回 13。因此,如果执行排序,apple 将在able 之前出现。

标签: objective-c sorting nsarray


【解决方案1】:

-sortedArrayUsingSelector:。你将传入一个像@selector(myComparisonMethod:) 这样的选择器。您的比较方法应该返回一个 NSComparisonResult,例如 NSOrderedAscending、NSOrderedDescending 或 NSOrderedSame。

【讨论】:

  • 请注意,这里假定比较方法是数组中对象的方法。这个问题没有具体说明,所以我认为值得指出。
  • - (NSComparisonResult)comparePointValue:(NSString *)otherString { int thisString = [calculateValue:self]; int other = [calculateValue:otherString]; if (thisString > other) { return NSOrderedDescending; } else if (thisString
  • @Chuck:一个很好的观点。我应该提到这应该是 NSString 上的一个 Objective-C 类别。
  • @aahrens:我想你已经明白了。唯一的问题是我通常对返回哪个方向(asc/desc)感到困惑,并且现在懒得去查找它。 :-) 只需确保您阅读了文档以确保您没有按照预期交换订单。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2012-06-24
  • 1970-01-01
相关资源
最近更新 更多