2010-11-15 118 views
1

我将如何去通过自定义方法对NSString对象进行排序。例如,我有一个方法通过自定义方法对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] 
+1

你是什么意思“基于返回值”?这个方法做什么/返回? – 2010-11-15 20:54:22

+0

calculateValue只是返回一个基于字符串的int值。所以苹果可能会返回15,而能够返回13。因此,如果执行排序苹果将会出现。 – aahrens 2010-11-15 20:58:27

回答

3

请参阅-sortedArrayUsingSelector:。你会通过像@selector(myComparisonMethod:)这样的选择器。您的比较方法应返回NSComparisonResult,如NSOrderedAscending,NSOrderedDescending或NSOrderedSame。

+0

请注意,这里假定比较方法是数组*中对象的方法*。这个问题没有具体说明,所以我认为值得指出。 – Chuck 2010-11-15 21:00:16

+0

那么做这样的事情? – aahrens 2010-11-15 21:16:14

+0

- (NSComparisonResult)comparePointValue:(NSString *)otherString { | | \t int thisString = [calculateValue:self]; \t int other = [calculateValue:otherString]; (其他) \t \t if \t} \t否则如果(thisString <其他){ \t \t 返回\t NSOrderedAscending; \t} \t return NSOrderedSame; } – aahrens 2010-11-15 21:16:36

相关问题