加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NS类 - NSArray排序二

(2013-05-25 22:26:39)
标签:

nsarray排序

it

分类: Mac/IOS那些事

#import <Foundation/NSArray.h>

#import <Foundation/NSString.h>

#import <Foundation/NSAutoreleasePool.h>

#import <stdio.h>

 

@interface NSString (sortingExtension)

@end

@implementation NSString (sortingExtension)

//降序排列 

- (NSComparisonResult) DesIn: (NSString *) aString

  {return -1 * [self caseInsensitiveCompare:aString];}

- (NSComparisonResult) Des: (NSString *) aString

  {return -1 * [self compare:aString];}

//升序排列 

- (NSComparisonResult) AscIn: (NSString *) aString

  {return [self caseInsensitiveCompare:aString];}

- (NSComparisonResult) Asc: (NSString *) aString

  {return [self compare:aString];}

//长度升序排列

- (NSComparisonResult) lenAsc: (NSString *) aString

  {

      if (self.length == aString.length)

return NSOrderedSame;

      if (self.length > aString.length)

return NSOrderedDescending;

      return NSOrderedAscending;

  }

//长度降序排列

- (NSComparisonResult) lenDes: (NSString *) aString

  {return -1 * [self lenAsc:aString];}

@end

 

void print( NSArray *array ) {

    //for(NSString *str in array){NSLog(@"%@",str);}

   

    int i;

for(i=0;i<[array count];i++){

printf("%s  ",[[[array objectAtIndex:i] description] cString]);}

    printf("\n");

}

 

 

int main( int argc, const char *argv[] ) {

 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

 NSArray *arr = [[NSArray alloc] initWithObjects:

              @"me", @"Myself", @"I", nil];

 NSMutableArray *mutable = [[NSMutableArray alloc] init];

   

    printf( "--不变的 arr 数组:" );

    print( arr );


// mutable中加入元素

    [mutable addObject: @"One"];

    [mutable addObject: @"Two"];

[mutable addObjectsFromArray: arr];

[mutable addObject: @"three"];

 

    printf( "--最初的可变的mutable数组:" );

    print( mutable );

 

    // sort then print

    printf( "--长度升序排序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(lenAsc: )];

    print( mutable );

 

    printf( "--长度升序降序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(lenDes: )];

    print( mutable );

 

    printf( "--不区分大小写升序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(AscIn: )];

    print( mutable );

 

    printf( "--区分大小写升序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(Asc: )];

    print( mutable );

 

    printf( "--不区分大小写降序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(DesIn: )];

    print( mutable );

 

    printf( "--区分大小写降序后的mutable数组:" );

    [mutable sortUsingSelector: @selector(Des: )];

    print( mutable );

   

    // free memory

    [arr release];

    [mutable release];

    [pool release];

 

    return 0;

}


输出:

--不变的 arr 数组:me  Myself  I  
--最初的可变的mutable数组:One  Two  me  Myself  three  
--长度升序排序后的mutable数组:I  me  One  Two  three  Myself  
--长度升序降序后的mutable数组:Myself  three  One  Two  me  I  
--不区分大小写升序后的mutable数组:I  me  Myself  One  three  Two  
--区分大小写升序后的mutable数组:I  Myself  One  Two  me  three  
--不区分大小写降序后的mutable数组:Two  three  One  Myself  me  I  
--区分大小写降序后的mutable数组:three  me  Two  One  Myself  I
 
代码可直接放如main里运行 谢谢网友分享
 
down src :http://download.csdn.net/download/kansome/4650996

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有