猿问

如何使用sortedArrayUsingDescriptors对NSMutableArray

如何使用sortedArrayUsingDescriptors对NSMutableArray进行排序?

我有一个关于排序的问题NSMutableArray。我可以使用sortedArrayUsingDescriptors:方法用对象对数组进行排序。

比如我有一个NSMutableArrayplaces,我有一个属性frequency(int值),我想降序排序上frequency,但我不知道如何正确使用它。

我把什么作为钥匙initWithKey

我的对象place包含:

NSString * name;NSString * address;NSString * frequency;NSString * type;

NSMutableArray * places;... populate array with objects ...NSSortDescriptor * sortByFrequency =
   [[[NSSortDescriptor alloc] initWithKey:@"????????" ascending:NO] autorelease];NSArray * descriptors = [NSArray arrayWithObject:sortByFrequency];NSArray * sorted = [x sortedArrayUsingDescriptors:descriptors];


千巷猫影
浏览 793回答 3
3回答

慕神8447489

要对您的对象数组进行排序:setup&nbsp;NSSortDescriptor- 使用变量名作为设置描述符进行排序的键以及要在这些键上执行的选择器使用NSSortDescriptor您设置的描述符数组根据这些描述符对数组进行排序这里有两个例子,一个使用NSDictionary和NSString/NSNumber值排序NSNumber,另一个使用自定义类,在两个NSString字段上排序。在Cocoa编程主题中按照排序和过滤NSArray对象来查看更多示例和说明。示例:这是在GNUStep上完成的,它应该在Cocoa上运行相同 - 代码完全一样 - 当我坐在我的Mac前面时我会尝试:第一个示例使用NSString和NSNumber值对值进行排序NSNumber:NSString&nbsp;*&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;@"name";NSString&nbsp;*&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;=&nbsp;@"address";NSString&nbsp;*&nbsp;FREQUENCY&nbsp;=&nbsp;@"frequency";NSString&nbsp;*&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;@"type";NSMutableArray&nbsp;*&nbsp;array&nbsp;=&nbsp;[NSMutableArray&nbsp;array];NSDictionary&nbsp;*&nbsp;dict;dict&nbsp;=&nbsp;[NSDictionary&nbsp;dictionaryWithObjectsAndKeys: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"Alehandro",&nbsp;NAME,&nbsp;@"Sydney",&nbsp;ADDRESS, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NSNumber&nbsp;numberWithInt:100],&nbsp;FREQUENCY, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"T",&nbsp;TYPE,&nbsp;nil];[array&nbsp;addObject:dict];dict&nbsp;=&nbsp;[NSDictionary&nbsp;dictionaryWithObjectsAndKeys: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"Xentro",&nbsp;NAME,&nbsp;@"Melbourne",&nbsp;ADDRESS, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NSNumber&nbsp;numberWithInt:50],&nbsp;FREQUENCY, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"X",&nbsp;TYPE,&nbsp;nil];[array&nbsp;addObject:dict];dict&nbsp;=&nbsp;[NSDictionary&nbsp;dictionaryWithObjectsAndKeys: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"John",&nbsp;NAME,&nbsp;@"Perth",&nbsp;ADDRESS, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NSNumber&nbsp;numberWithInt:75], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FREQUENCY,&nbsp;@"A",&nbsp;TYPE,&nbsp;nil];[array&nbsp;addObject:dict];dict&nbsp;=&nbsp;[NSDictionary&nbsp;dictionaryWithObjectsAndKeys: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"Fjord",&nbsp;NAME,&nbsp;@"Brisbane",&nbsp;ADDRESS, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NSNumber&nbsp;numberWithInt:20],&nbsp;FREQUENCY, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@"B",&nbsp;TYPE,&nbsp;nil];[array&nbsp;addObject:dict];使用带有频率字段的描述符对部件进行排序,即NSNumber:NSSortDescriptor&nbsp;*&nbsp;frequencyDescriptor&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;[[[NSSortDescriptor&nbsp;alloc]&nbsp;initWithKey:FREQUENCY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascending:YES]&nbsp;autorelease];id&nbsp;obj;NSEnumerator&nbsp;*&nbsp;enumerator&nbsp;=&nbsp;[array&nbsp;objectEnumerator];while&nbsp;((obj&nbsp;=&nbsp;[enumerator&nbsp;nextObject]))&nbsp;NSLog(@"%@",&nbsp;obj);NSArray&nbsp;*&nbsp;descriptors&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;[NSArray&nbsp;arrayWithObjects:frequencyDescriptor,&nbsp;nil];NSArray&nbsp;*&nbsp;sortedArray&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;[array&nbsp;sortedArrayUsingDescriptors:descriptors];NSLog(@"\nSorted&nbsp;...");enumerator&nbsp;=&nbsp;[sortedArray&nbsp;objectEnumerator];while&nbsp;((obj&nbsp;=&nbsp;[enumerator&nbsp;nextObject]))&nbsp;NSLog(@"%@",&nbsp;obj);输出 - 按频率字段排序:2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Sydney;&nbsp;frequency&nbsp;=&nbsp;100;&nbsp;name&nbsp;=&nbsp;Alehandro;&nbsp;type&nbsp;=&nbsp;T;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Melbourne;&nbsp;frequency&nbsp;=&nbsp;50;&nbsp;name&nbsp;=&nbsp;Xentro;&nbsp;type&nbsp;=&nbsp;X;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Perth;&nbsp;frequency&nbsp;=&nbsp;75;&nbsp;name&nbsp;=&nbsp;John;&nbsp;type&nbsp;=&nbsp;A;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Brisbane;&nbsp;frequency&nbsp;=&nbsp;20;&nbsp;name&nbsp;=&nbsp;Fjord;&nbsp;type&nbsp;=&nbsp;B;&nbsp;}2009-12-04&nbsp;x[1]Sorted&nbsp;...2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Brisbane;&nbsp;frequency&nbsp;=&nbsp;20;&nbsp;name&nbsp;=&nbsp;Fjord;&nbsp;type&nbsp;=&nbsp;B;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Melbourne;&nbsp;frequency&nbsp;=&nbsp;50;&nbsp;name&nbsp;=&nbsp;Xentro;&nbsp;type&nbsp;=&nbsp;X;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Perth;&nbsp;frequency&nbsp;=&nbsp;75;&nbsp;name&nbsp;=&nbsp;John;&nbsp;type&nbsp;=&nbsp;A;&nbsp;}2009-12-04&nbsp;x[1]&nbsp;{address&nbsp;=&nbsp;Sydney;&nbsp;frequency&nbsp;=&nbsp;100;&nbsp;name&nbsp;=&nbsp;Alehandro;&nbsp;type&nbsp;=&nbsp;T;&nbsp;}第二个示例使用自定义类并对两个NSString变量进行排序。要排序的数组(参见A底部的类):NSMutableArray&nbsp;*&nbsp;array&nbsp;=&nbsp;[NSMutableArray&nbsp;array];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"Alehandro" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Xentro" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:40]]];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"John" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Smith" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:30]]];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"John" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Smyth" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:25]]];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"Torro" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Ola" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:45]]];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"Alehandro" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Bento" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:41]]];[array&nbsp;addObject:[[A&nbsp;alloc]&nbsp;initWithFirstName:@"Alehandro" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"Axel" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:[NSNumber&nbsp;numberWithInt:41]]];排序部分,在lastName上排序,然后是firstName:NSString&nbsp;*&nbsp;LASTNAME&nbsp;=&nbsp;@"lastName";NSString&nbsp;*&nbsp;FIRSTNAME&nbsp;=&nbsp;@"firstName";NSSortDescriptor&nbsp;*lastDescriptor&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;[[[NSSortDescriptor&nbsp;alloc] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithKey:LASTNAME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascending:YES &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selector:@selector(localizedCaseInsensitiveCompare:)]&nbsp;autorelease];NSSortDescriptor&nbsp;*firstDescriptor&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;[[[NSSortDescriptor&nbsp;alloc] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithKey:FIRSTNAME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascending:YES &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selector:@selector(localizedCaseInsensitiveCompare:)]&nbsp;autorelease];NSArray&nbsp;*&nbsp;descriptors&nbsp;= &nbsp;&nbsp;&nbsp;[NSArray&nbsp;arrayWithObjects:lastDescriptor,&nbsp;firstDescriptor,&nbsp;nil];NSArray&nbsp;*&nbsp;sortedArray&nbsp;= &nbsp;&nbsp;&nbsp;[array&nbsp;sortedArrayUsingDescriptors:descriptors];打印结果:NSLog(@"\nSorted&nbsp;...");enumerator&nbsp;=&nbsp;[sortedArray&nbsp;objectEnumerator];while&nbsp;((obj&nbsp;=&nbsp;[enumerator&nbsp;nextObject]))&nbsp;NSLog(@"%@",&nbsp;obj);结果(排序前后):2009-12-04&nbsp;00:52:16.637&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Xentro,&nbsp;age:402009-12-04&nbsp;00:52:16.644&nbsp;x[11375]&nbsp;John,&nbsp;Smith,&nbsp;age:302009-12-04&nbsp;00:52:16.644&nbsp;x[11375]&nbsp;John,&nbsp;Smyth,&nbsp;age:252009-12-04&nbsp;00:52:16.644&nbsp;x[11375]&nbsp;Torro,&nbsp;Ola,&nbsp;age:452009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Bento,&nbsp;age:412009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Axel,&nbsp;age:412009-12-04&nbsp;00:52:16.645&nbsp;x[11375]Sorted&nbsp;...2009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Axel,&nbsp;age:412009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Bento,&nbsp;age:412009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Torro,&nbsp;Ola,&nbsp;age:452009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;John,&nbsp;Smith,&nbsp;age:302009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;John,&nbsp;Smyth,&nbsp;age:252009-12-04&nbsp;00:52:16.645&nbsp;x[11375]&nbsp;Alehandro,&nbsp;Xentro,&nbsp;age:40课程A延伸NSObject- 这里没什么特别的:#import&nbsp;<Foundation/Foundation.h>@interface&nbsp;A&nbsp;:&nbsp;NSObject{ &nbsp;&nbsp;&nbsp;&nbsp;NSString&nbsp;*&nbsp;firstName; &nbsp;&nbsp;&nbsp;&nbsp;NSString&nbsp;*&nbsp;lastName; &nbsp;&nbsp;&nbsp;&nbsp;NSNumber&nbsp;*&nbsp;age;}-&nbsp;(id)initWithFirstName:(NSString*)aFirstName &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:(NSString*)aLastName &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:(NSNumber*)anAge;-(NSString*&nbsp;)description;+(NSString*)action;@end执行:#import&nbsp;<Foundation/Foundation.h>#import&nbsp;"A.h"@implementation&nbsp;A-&nbsp;(id)init{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[self&nbsp;initWithFirstName:@"N/A" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:@"N/A" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:0];}-&nbsp;(id)initWithFirstName:(NSString*)aFirstName &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:(NSString*)aLastName &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age:(NSNumber*)anAge{ &nbsp;&nbsp;&nbsp;&nbsp;self&nbsp;=&nbsp;[super&nbsp;init]; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!self)&nbsp;return&nbsp;nil; &nbsp;&nbsp;&nbsp;&nbsp;firstName&nbsp;=&nbsp;[aFirstName&nbsp;copy]; &nbsp;&nbsp;&nbsp;&nbsp;lastName&nbsp;=&nbsp;[aLastName&nbsp;copy]; &nbsp;&nbsp;&nbsp;&nbsp;age&nbsp;=&nbsp;[anAge&nbsp;copy]; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self;}-&nbsp;(void)dealloc{ &nbsp;&nbsp;&nbsp;&nbsp;[firstName&nbsp;release]; &nbsp;&nbsp;&nbsp;&nbsp;[lastName&nbsp;release]; &nbsp;&nbsp;&nbsp;&nbsp;[age&nbsp;release]; &nbsp;&nbsp;&nbsp;&nbsp;[super&nbsp;release];}-&nbsp;(NSString&nbsp;*)&nbsp;description{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[NSString&nbsp;stringWithFormat:&nbsp;@"%@,&nbsp;%@,&nbsp;age:%@", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstName,&nbsp;lastName,&nbsp;age];}@end

慕尼黑8549860

“键”是对象的方法(数组“x”的元素),它返回要排序的对象。所以在这种情况下,你说你想按“频率”排序。然后,您所要做的就是使用返回频率的方法的名称作为键。

慕虎7371278

以下是对NSMutableArray进行排序的方法:NSMutableArray&nbsp;*numberSort&nbsp;=[[NSMutableArray&nbsp;alloc]&nbsp;init]; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((key&nbsp;=&nbsp;[enumerator&nbsp;nextObject]))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(NSNumber&nbsp;*)integer&nbsp;=&nbsp;[key&nbsp;integerValue]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[numberSort&nbsp;&nbsp;addObject:[NSNumber&nbsp;numberWithInt:[key&nbsp;intValue]]]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;code&nbsp;that&nbsp;uses&nbsp;the&nbsp;returned&nbsp;key&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;NSArray&nbsp;*stringSort&nbsp;=&nbsp;[numberSort&nbsp;sortedArrayUsingSelector:@selector(compare:)]; &nbsp;&nbsp;&nbsp;&nbsp;enumerator&nbsp;=&nbsp;[stringSort&nbsp;objectEnumerator]; &nbsp;&nbsp;&nbsp;&nbsp;NSNumber&nbsp;&nbsp;*intKey; &nbsp;&nbsp;&nbsp;&nbsp;NSMutableArray&nbsp;*backToString&nbsp;=[[NSMutableArray&nbsp;alloc]&nbsp;init]; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((intKey&nbsp;=&nbsp;[enumerator&nbsp;nextObject]))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(NSNumber&nbsp;*)integer&nbsp;=&nbsp;[key&nbsp;integerValue]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[backToString&nbsp;&nbsp;addObject:[intKey&nbsp;stringValue]]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;code&nbsp;that&nbsp;uses&nbsp;the&nbsp;returned&nbsp;key
随时随地看视频慕课网APP
我要回答