在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
(1)直接调用系统的方法排序int NSMutableArray *array = [[NSMutableArray alloc]init]; [array addObject:[NSNumber numberWithInt:20]]; [array addObject:[NSNumber numberWithInt:1]]; [array addObject:[NSNumber numberWithInt:4]]; NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)]; for(int i = 0; i < [sortedArray count]; i++) { int x = [[sortedArray objectAtIndex:i]intValue]; NSLog(@"######%d/n", x); } (2)用descriptor方法 #import <Cocoa/Cocoa.h>
@interface Node: NSObject { int x; int y; int v; }
@property int x; @property int y; @property int v; - (id)init:(int)tx y:(int)ty v:(int)tv; @end
@implementation Node
@synthesize x; @synthesize y; @synthesize v;
- (id)init:(int)tx y:(int)ty v:(int)tv { x = tx; y = ty; v = tv; return self; }
@end
int main(int argc, char *argv[]) { NSMutableArray *myMutableArray = [[NSMutableArray alloc]init]; Node *n[2]; n[0] = [[Node alloc]init:2 y:1 v:1]; n[1] = [[Node alloc]init:4 y:2 v:2];
[myMutableArray addObject:n[0]]; [myMutableArray addObject:n[1]]; NSSortDescriptor * sortByA = [NSSortDescriptor sortDescriptorWithKey:@"x" ascending:NO]; [myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByA]]; for(Node *t in myMutableArray) { NSLog(@"x === %d", t.x); NSLog(@"y === %d", t.y); NSLog(@"v === %d", t.v); } }
(3)自定义重写方法 /*
Abstract: Constants returned by comparison functions, indicating whether a value is equal to, less than, or greater than another value. Declaration: enum CFComparisonResult { kCFCompareLessThan = -1, kCFCompareEqualTo = 0, }; */ #import <Cocoa/Cocoa.h> @implementation NSNumber (MySort) - (NSComparisonResult) myCompare:(NSString *)other { //这里可以作适当的修正后再比较 int result = ([self intValue]>>1) - ([other intValue]>>1); //这里可以控制排序的顺序和逆序 return result < 0 ? NSOrderedDescending : result > 0 ? NSOrderedAscending : NSOrderedSame; }
@end int main(int argc, char *argv[]) { NSMutableArray *array = [[NSMutableArray alloc]init]; [array addObject:[NSNumber numberWithInt:20]]; [array addObject:[NSNumber numberWithInt:1]]; [array addObject:[NSNumber numberWithInt:4]]; NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(myCompare:)]; for(int i = 0; i < [sortedArray count]; i++) { int x = [[sortedArray objectAtIndex:i]intValue]; NSLog(@"######%d/n", x); } }
注: 关于 sortedArrayUsingSelector:@selector(copare:)是默认的排序方法,而你自己可以重写排序方法,比如上面的myCompare 附: search/find and comparison methods enum { |
请发表评论