2010-11-15 116 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

相關問題